【问题标题】:Python Int object not callablePython Int 对象不可调用
【发布时间】:2017-09-19 17:46:19
【问题描述】:

请帮忙!我不明白这里的错误。为什么我在输入 0、1 或 2 以外的数字时收到错误消息:“'int' object is not callable”?相反,它假设打印“您输入的数字不正确,请重试”并返回提问。

第二个问题:另外,我怎样才能更改代码,即使我输入字母字符,它也不会给我值错误并继续重新提出问题?谢谢!

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_action(),但实际上调用的是变量player_action,它是一个int。不要为函数和变量使用相同的名称!
  • 另外,没有理由让这个函数递归。只需放置一个while 循环,直到您获得有效输入,然后对该输入执行某些操作。
  • 哦,好的,谢谢!
  • 对不起,你能告诉我如何使用 while 函数重写它吗?

标签: python object int


【解决方案1】:

您应该按照@Pedro Lobito 的建议更改变量名称,按照@Craig 的建议使用while 循环,您还可以包含try...except 语句,但不是@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()

【讨论】:

    【解决方案2】:

    Pedro 已经回答了您问题的第一个答案,但至于第二个答案,try except 语句应该可以解决这个问题:

    编辑:是的,抱歉,我搞砸了...有更好的答案,但我认为我应该花时间解决这个问题

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

    【讨论】:

      【解决方案3】:

      只需将变量名player_action改成函数的diff名称,即:

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

      【讨论】:

        猜你喜欢
        • 2015-12-19
        • 2017-12-20
        • 2019-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-24
        • 2015-01-29
        相关资源
        最近更新 更多