2014-11-23 82 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

相關問題