我正在使用 Python 熱身,需要您的幫助來應用一些例外情況。這是一個簡單的猜謎游戲,用戶輸入輸入并嘗試猜測生成的隨機數。我正在嘗試捕獲用戶輸入從 1 到 50 的數字的異常。為此,我使用了 IndexError。這是我使用的正確錯誤類型嗎?我還輸入了另一個異常,即 ValueError 以防止確保用戶輸入數字,而不是空格。我的問題是如何拋出用戶只輸入 1 到 50 之間的數字的異常?import randomnumber_of_guesses = 0number = random.randint(1,50)name = input('Hi! Enter your name: ')while number_of_guesses < 8: try: guess = input("Take a guess between 1 and 50 including ") guess = int(guess) number_of_guesses+=1 guesses_left = 8 - number_of_guesses except IndexError: print('Please enter a number only between 1 and 50 including') continue except ValueError: print('Enter a number') continue if guess>number: print('Your guess is higher than the actual number',guesses_left,'guesses left') elif guess<number: print('Your guess is lower than the actual number',guesses_left,'guesses left') elif guess==number: breakif guess==number: print('Well done! You guessed the number in',number_of_guesses,'tries:')if guess != number: print('Sorry, the number I was thinking of was',number)
2 回答

慕村225694
TA貢獻1880條經驗 獲得超4個贊
歡迎來到 SO 和 python
首先,退一步了解 try/except 塊的作用。
try/是一個結構,其中 Python 將“嘗試”執行代碼塊并通過將 Exception 的類型與子句except指定的錯誤類型相匹配來捕獲任何異常(或意外錯誤)。except
IndexError當您嘗試索引支持索引的對象(例如 a list)并且您指定的索引超出索引范圍時會發生 An ,例如:
my_list = ["a", "b", "c"]
print(mylist[0])
# will print "a"
print(my_list[4])
# with raise in IndexError as index 4 doesn't exist.
在您的示例中,在傳遞非整數參數值時ValueError調用 to 引發。int因為你沒有索引任何東西IndexError都沒有提出。
至于將 if/else 放在 try 塊之內還是之外。通過將其放在 try 塊中,可以捕獲 if/else 塊中引發的任何異常。在這兩種情況下,if/else 塊的行為保持不變。

至尊寶的傳說
TA貢獻1789條經驗 獲得超10個贊
對于索引錯誤,您需要索引一個列表
a = [1 , 2, 3] print(a[5])
通過在 try 中放置語句,您可以捕獲程序中的異常并可以自己處理問題,以便程序繼續運行。
在嘗試之外會導致異常錯誤并且程序中止。
添加回答
舉報
0/150
提交
取消