繁体   English   中英

Python-这怎么了? 我不断收到错误消息

[英]Python - What's wrong with this? I keep getting a error

我已经在python 3.4.1中编写了这个猜数字游戏。 该程序正在运行,但是我打开它显示给别人看,但出现了这个错误,我昨天才写完。

我不断收到以下错误:

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()

请帮助我,我似乎无法弄清楚为什么会出现此错误。

input确实仅需要一个参数。 我怀疑您打算在此处和以下三行中使用print

错误消息告诉您出了什么问题。 您正在向输入传递三个参数,输入仅需要一个参数。 我怀疑您将第97行从

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

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

print函数确实有多个参数,这就是为什么以前可以使用。

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

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

要么

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM