Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Int对象不可调用_Python_Object_Int - Fatal编程技术网

Python 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

请帮忙!我不明白这里的错误。为什么在键入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 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函数重写这个吗?