Python Int对象不可调用
请帮忙!我不明白这里的错误。为什么在键入0、1或2以外的数字时会出现错误:“int”对象不可调用?相反,它应该打印“您输入的号码不正确,请再试一次”,然后返回询问问题 第二个问题:我如何更改代码,即使我键入字母字符,它也不会给我值错误并继续重新提问?谢谢大家!Python Int对象不可调用,python,object,int,Python,Object,Int,请帮忙!我不明白这里的错误。为什么在键入0、1或2以外的数字时会出现错误:“int”对象不可调用?相反,它应该打印“您输入的号码不正确,请再试一次”,然后返回询问问题 第二个问题:我如何更改代码,即使我键入字母字符,它也不会给我值错误并继续重新提问?谢谢大家! def player_action(): player_action = int(input("Enter 0 to stay, 1 to go Up, or 2 to go Down: ")) if p
def player_action():
player_action = int(input("Enter 0 to stay, 1 to go Up, or 2 to go Down: "))
if player_action == 0:
print ("Thank You, you chose to stay")
if player_action == 1:
print ("Thank You, you chose to go up")
if player_action == 2:
print ("Thank You, you chose to go down")
else:
print ("You have entered an incorrect number, please try again")
player_action()
player_action()
只需将变量名
player\u action
更改为函数的不同名称,即:
def player_action():
user_input = int(input("Enter 0 to stay, 1 to go Up, or 2 to go Down: "))
if user_input == 0:
print ("Thank You, you chose to stay")
elif user_input == 1:
print ("Thank You, you chose to go up")
elif user_input == 2:
print ("Thank You, you chose to go down")
else:
print ("You have entered an incorrect number, please try again")
player_action()
player_action()
Pedro已经回答了您问题的第一个答案,但对于第二个答案,try-Exception语句应该可以解决这个问题: 编辑:是的,对不起,我把事情搞砸了。。。有更好的答案,但我认为我应该花时间来解决这个问题
def player_action():
try:
player_action_input = int(input("Enter 0 to stay, 1 to go Up, or 2 to go Down: "))
except ValueError:
print("Non valid value") # or somehting akin
player_action()
if player_action_input == 0:
print ("Thank You, you chose to stay")
elif player_action_input == 1:
print ("Thank You, you chose to go up")
elif player_action_input == 2:
print ("Thank You, you chose to go down")
else:
print ("You have entered an incorrect number, please try again")
player_action()
player_action()
您应该将变量名更改为@Pedro Lobito suggest,使用@Craig建议的
while
循环,还可以包括try…除了语句,但不使用@polarisfox64的方式,因为他将其放置在了错误的位置
以下是完整版本供您参考:
def player_action():
while True:
try:
user_input = int(input("Enter 0 to stay, 1 to go Up, or 2 to go Down: "))
except ValueError:
print('not a number')
continue
if user_input == 0:
print ("Thank You, you chose to stay")
if user_input == 1:
print ("Thank You, you chose to go up")
if user_input == 2:
print ("Thank You, you chose to go down")
else:
print ("You have entered an incorrect number, please try again")
continue
break
player_action()
您的变量名会影响函数名。您试图调用函数player\u action()
,但实际上正在调用变量player\u action
,该变量是一个int。函数和变量的名称不要相同!而且,没有理由让这个函数递归。只需在while
循环中输入一个,直到您得到一个有效的输入,然后对该输入进行处理。哦,好的,谢谢!对不起,你能告诉我如何用while函数重写这个吗?