当我试图比较两个整数时,我得到了一个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()
1条答案
按热度按时间2uluyalo1#
您在
game
函数中为表示用户输入的参数(userInput
)选择的名称与捕获用户输入的函数的名称相同。因此,在game
函数的作用域中,userInput
是整数,但您试图将其用作函数(并且int
类型不可调用)。此外,
userInput()
函数的返回值不用于更新变量userInput
的值,因此如果用户提供的第一个值与computerInput
不同,则循环将永远继续。如果您变更
game
函数中的参数名称,并更新使用者提供的值,程式就会如预期般运作:否则,您可以稍微更改代码,从game函数的参数中删除用户输入:
很明显,你还必须从
main
函数中删除theInput = userInput()
。实际上,你可以直接使用game
函数来删除main函数:然而,
userInput
和computerGuess
函数中变量名称的选择也是不明智的:你应该避免在一个函数中使用与该函数相同的名字来命名变量,因为这会使你的代码更容易出错。另一个建议:您可以通过限制值的范围来轻松地改进程序:例如,生成一个1到10之间的随机整数并让用户猜测它。您可以使用
random.randint
代替random.random
来修改computerGuess
,并添加一个检查以禁止用户输入范围[1;[10]第10段。