簡體   English   中英

Python Int對​​象不可調用

[英]Python Int object not callable

請幫忙! 我不明白這里的錯誤。 當我鍵入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()

佩德羅(Pedro)已回答您問題的第一個答案,但至於第二個答案,請嘗試try語句可以解決此問題:

編輯:是的,對不起,我把它弄亂了……有更好的答案,但我認為我應該花點時間解決這個問題

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的建議更改變量名稱,按照@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()

只需將變量名稱player_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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM