簡體   English   中英

引發異常后未分配變量

[英]Variable Not Being Assigned After Exception Raised

我正在編寫一個Python程序,以在計算機上為不同的編程語言創建項目。 首先從選擇該特定項目的語言開始,我試圖以一種能夠很好地處理錯誤的方式來進行處理。

到目前為止,我已經有了這段代碼。

def prompt_user():
    print "Enter the number of the project you would like to create.\n"

    aOptions = ["1. Java", "2. C/C++", "3. Python", "4. Web"]
    for sOption in aOptions:
        print sOption

    try:    
        iOptionChosen = int(raw_input("> "))
        if not(1 <= iOptionChosen <= 4):
            raise ValueError
        else:
            return iOptionChosen
    except ValueError:
        print "\nInvalid value entered. Try again."
        prompt_user()

print prompt_user()

它非常適合我需要做的事情,除了在引發異常並重新提示用戶之后,它永遠不會將新變量重新分配給iOptionChosen。 為什么會這樣,有一個簡單的解決方法嗎? 真令人沮喪。

非常感謝你的幫助!

except情況下:

except ValueError:
    print "\nInvalid value entered. Try again."
    prompt_user()

您只能prompt_user遞歸方式調用 prompt_user 相反,您需要返回它提供的值

except ValueError:
    print "\nInvalid value entered. Try again."
    return prompt_user()

您可能會考慮在邏輯上添加一些while 這樣,您只需停留在while循環中,直到輸入有效為止。

user_deciding = True
while user_deciding:
    try:
        choice = int(raw_input("> "))
        if choice in list_of_choices:
            user_deciding = False
        else:
            raise ValueError
    except ValueError:
        print "Please make a valid choice."

handle_choice_made(choice)

另外,您可以使用if 5 > choice > 0語法,但是使用僅借用現有列表或字典的數據結構而不是檢查表示有效數據輸入的魔術范圍可能是值得的。

暫無
暫無

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

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