python-3.x 试图比较两个整数,它在我的一个函数中给我一个int错误

lbsnaicq  于 2022-11-19  发布在  Python
关注(0)|答案(1)|浏览(97)

当我试图比较两个整数时,我得到了一个int错误。说它不能比较一个int和一个字符串,但我把输入(字符串)转换为一个int。有人能解释为什么会发生这种情况吗?
我尝试对userInput = int(input(PROMPT)进行整型转换,然后返回userInput。然后我尝试将我的computerChoice与userInput进行比较,结果出现错误。

def userInput():
    userInput = int(input(PROMPT))
    return userInput

下面是完整的代码:Python3顺便说一句:

PROMPT = "Please enter an integer: "

WELCOME = "THE GUESSING GAME"

#get input
def userInput():
    userInput = int(input(PROMPT))
    return userInput

#get computer guess
def computerGuess():
    import random
    computerGuess = (int)(random.random()*6)
    return computerGuess

def game(userInput, computerInput):
    while userInput != computerInput:
        print("Try again")
        userInput()
        if userInput == computerInput:
            print("You win!!")      
def main():
    
    #get user Input in main
    theInput = userInput()

    #computer input 
    computer = computerGuess()

    #launch game 
    game(theInput, computer)
    


main()
2uluyalo

2uluyalo1#

您在game函数中为表示用户输入的参数(userInput)选择的名称与捕获用户输入的函数的名称相同。因此,在game函数的作用域中,userInput是整数,但您试图将其用作函数(并且int类型不可调用)。
此外,userInput()函数的返回值不用于更新变量userInput的值,因此如果用户提供的第一个值与computerInput不同,则循环将永远继续。
如果您变更game函数中的参数名称,并更新使用者提供的值,程式就会如预期般运作:

def game(user_input, computer_input):
    while user_input != computer_input:
        print("Try again")
        user_input = userInput()
        if user_input == computer_input:
            print("You win!!")

否则,您可以稍微更改代码,从game函数的参数中删除用户输入:

def game(computer_input):
    while userInput() != computer_input:
        print("Try again")
    print("You win!!")

很明显,你还必须从main函数中删除theInput = userInput()。实际上,你可以直接使用game函数来删除main函数:

game(computerGuess())

然而,userInputcomputerGuess函数中变量名称的选择也是不明智的:你应该避免在一个函数中使用与该函数相同的名字来命名变量,因为这会使你的代码更容易出错。
另一个建议:您可以通过限制值的范围来轻松地改进程序:例如,生成一个1到10之间的随机整数并让用户猜测它。您可以使用random.randint代替random.random来修改computerGuess,并添加一个检查以禁止用户输入范围[1;[10]第10段。

相关问题