我正在撰寫一個腳本:
- 要求用戶輸入一個數字。
- 檢測“ValueError”型別的錯誤。用戶只有 5 次嘗試輸入正確的輸入。
- 如果用戶輸入零,腳本將停止執行并顯示訊息“全部完成”。
- 如果用戶輸入一個正整數,腳本會判斷該數字是偶數還是奇數。它繼續要求用戶輸入另一個數字;一共10次。
這是我的嘗試。
attempt = 0
max_attempts = 5
i = 0
i_max = 10
while attempt < max_attempts:
attempt = 1
try:
while i < i_max:
i = 1
number = int(input('Please type in a positive integer; 0 to quite: '))
if number == 0:
print('All done!')
break
if number <0:
print('Please type in a positive number.')
if number%2 == 0:
print("The number",number, "is even.")
else:
print("The number",number, "is odd.")
print('Only', i_max-i, 'numbers left.')
except ValueError:
print('Wrong input, ', max_attempts - attempt, 'attempts left')
if attempt == max_attempts: # You tried too many times
print('Sorry, too many attempts!')
如果用戶輸入 0,則腳本不會按需要停止。如果用戶輸入正確,則輸入最終字串“對不起,嘗試次數過多!” 在這種情況下不需要列印。我該如何解決這些問題?任何幫助將不勝感激。非常感謝您提前。如果我遺漏了一些相當基本的東西,我深表歉意。
uj5u.com熱心網友回復:
在 if 條件中添加嘗試 = 6(如果數字 == 0)
attempt = 0
max_attempts = 5
i = 0
i_max = 10
while attempt < max_attempts:
attempt = 1
try:
while i < i_max:
i = 1
number = int(input('Please type in a positive integer; 0 to quite: '))
if number == 0:
print('All done!')
attempt = 6
break
if number < 0:
print('Please type in a positive number.')
if number % 2 == 0:
print("The number", number, "is even.")
else:
print("The number", number, "is odd.")
print('Only', i_max - i, 'numbers left.')
except ValueError:
print('Wrong input, ', max_attempts - attempt, 'attempts left')
if attempt == max_attempts: # You tried too many times
print('Sorry, too many attempts!')
uj5u.com熱心網友回復:
如果用戶輸入 0,則中斷當前的 while 回圈。但是,這個 while 回圈在另一個 while 回圈中。您可以添加一個變數“is_finish”。如果用戶輸入 0,則將此新變數設定為 True。在第一個 while 回圈條件中,添加“is_finish == False”。
希望這對你有幫助!
uj5u.com熱心網友回復:
您可以使用for回圈來控制允許用戶重復的總次數,然后使用單獨的failure變數來計算他們輸入無效內容的次數:
max_success = 10
max_failures = 5
failure = 0
for attempt in range(max_success):
user_input = input(f' {attempt 1}/{max_success} - Ener a positive integer or 0 to quit: ')
if user_input == '0':
print(' Quit')
break
try:
user_input = int(user_input)
if user_input % 2 == 0:
print(' Even number')
else:
print(' Odd number')
except ValueError:
failure = 1
print(f' Not a number (failure {failure} of {max_failures})')
if failure >= max_failures:
break
以下是他們提交 5 個無效條目時的示例輸出:
1/10 - Ener a positive integer or 0 to quit: 5
Odd number
2/10 - Ener a positive integer or 0 to quit: a
Not a number (failure 1 of 5)
3/10 - Ener a positive integer or 0 to quit: b
Not a number (failure 2 of 5)
4/10 - Ener a positive integer or 0 to quit: c
Not a number (failure 3 of 5)
5/10 - Ener a positive integer or 0 to quit: d
Not a number (failure 4 of 5)
6/10 - Ener a positive integer or 0 to quit: e
Not a number (failure 5 of 5)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/514345.html
