2014-11-23 102 views
2

我写了这个号码在Python 3.4.1的猜谜游戏。这一计划是工作,但我打开它表明有人和我得到这个错误,我只完成了昨天写它。Python - 这有什么问题?我不断收到一个错误

我不断收到以下错误:

Would you like to play again?[Y/N] n 
Traceback (most recent call last): 
    File "C:\Users\Documents\Guessing Game.py", line 130, in <module> 
    end() 
    File "C:\Users\Documents\Guessing Game.py", line 97, in end 
    input('\nYou scored a total of',score,'points!\n') 
TypeError: input expected at most 1 arguments, got 3 

这是我的代码:

#imports required modules 
import random 

#score set as global variable with the value 0 
global score 
score = 0 

def start(): 
    #askes if user needs rules 
    rules = input('Would you like to read the rules?(Y/N) ') 
    #if yes rules are printed 
    if rules.lower() == 'y': 
     #prints inctructions 
     input('\t\t\t\t\tRules\n') 
     input("Guess the number the computer is thinking of to win but you only have 3 lives.") 
     input("\nStart by choosing the range of numbers the computer can choose from.") 
     input("""For example if I wanted a number between 1 and 10 I would type 1 for 
lowest number and 10 for highest number.""") 
     input("""\nThe more lives you have left when you win the more points you get. 
    The larger the range of numbers you give the computer 
    the larger your score multipler.""") 
     input("\nIt can be harder than you think!") 
     input("\n\t\t\t\t\tEnjoy!") 
    #if not player is aksed to play 
    play = input("\nWould you like to play?(Y/N) ") 
    if play.lower() == 'n': 
     #if they don't game quits 
     quit() 

#main game code 
def main(): 
    global low 
    global up 
    #generates number at random between the users two inputs 
    comp_num = random.randint(low,up) 
    #score set as global variable within function 
    global score 
    #lives created 
    lives = 3 
    while lives >= 1: 
     #player guesses 
     guess = int(input('Guess: ')) 
     if comp_num == guess: 
      #if correct says well done 
      print('\nWell Done! You guessed Correctly!') 
      #1 live left player gets 5 points 
      if lives == 1: 
       score += 5 
       print('\nYou scored 5 points!\n') 
      #2 lives left player gets 10 points 
      elif lives == 2: 
       score += 10 
       print('\nYou scored 10 points!\n') 
      #3 lives left player gets 15 points 
      elif lives == 3: 
       score += 15 
       print('\nYou scored 15 points!\n') 
      break 
     elif comp_num >= guess: 
      #if guess is too low tells player 
      #one live taken for incorrect guess 
      lives = lives -1 
      print('\nToo low!\n') 
      #player is told how many lives they have left 
      print('You guessed incorrectly. You have',lives,'live(s) remaining.\n') 
      if lives == 0: 
        #if player guesses incorrectly they get told the correct awnser 
        print('The number I was thinking of was...',comp_num,'!\n') 
     elif comp_num <= guess: 
      #if guess is too high tells player 
      #one live taken for incorrect guess 
      lives = lives -1 
      print('\nToo high!\n') 
      #player is told how many lives they have left 
      print('You guessed incorrectly. You have',lives,'live(s) remaining.\n') 
      if lives == 0: 
        #if player guesses incorrectly they get told the correct awnser 
        print('The number I was thinking of was...',comp_num,'!\n') 

def end(): 
    #asks player if they want to play again 
    play_again = input('Would you like to play again?[Y/N] ') 
    while play_again.lower() == 'y': 
     #if they do game resets and plays again 
     if play_again.lower() == 'y': 
      comp_num = random.randint(1,10) 
      #starts game 
      print('\nI\'m thinking of a number guess what it is...\n') 
      main() 
      play_again = input('Would you like to play again?[Y/N] ') 
      if play_again.lower() == 'n': 
       #if they don't want to play again while loop breaks 
       break 
    if play_again.lower() == 'n': 
     #if they don't game ends 
     #prints score 
     input('\nYou scored a total of',score,'points!\n') 
     #prints mulipler 
     input('You Multipler is',multi,'!') 
     #calculates total score 
     total =float(score * multi) 
     #prints total score 
     input('\nYour final score is',total,'!') 
     input('\nPress enter to exit') 

#calls intial game function to start 
start() 

#lower number set as global and value of user input 
global low 
low = int(input('\nLowest number: ')) 
#lower number set a global and value of user input 
global up 
up = int(input('Hightest number: ')) 

#sets up the score mulitpler 
rang = float(up - low + 1) 
multi = float(rang/4) 
#if the multipler is less then 1 it gets sent to 1 so it doesn't remove points 
if multi < 1: 
    multi = 1 

#starts atcual game 
print('\nI\'m thinking of a number guess what it is...\n') 

#calls main section of game 
main() 

#calls end of game to give option of playing again and resetting game 
end() 

请帮助我,我似乎无法明白为什么我得到这个错误。

回答

3

input确实也只取一个参数。我怀疑你的意思是使用print那里,在以下三行。

+0

这是符合97? – person101 2014-11-23 16:53:48

+0

是的,99和103,而不是104 – 2014-11-23 16:55:50

+0

或者这是对所有的行做打印成绩? – person101 2014-11-23 16:56:10

1

错误消息告诉你什么是错的。您将三个参数传递给输入,而这只需要一个参数即可。我怀疑你从

print('\nYou scored a total of',score,'points!\n') 

改线97

input('\nYou scored a total of',score,'points!\n') 

打印功能确实需要多个参数,这就是为什么它工作过。

要解决这个问题,你可以改回打印,也可以使用字符串格式化:

input('\nYou scored a total of %i points!\n' % score) 

input('\nYou scored a total of {0} points!\n'.format(score)) 
+0

非常感谢你。 – person101 2014-11-23 16:58:53

相关问题