如果用戶在我的菜單選項中輸入字符串而不是整數,那麼我需要添加一條錯誤消息,並且還會將用戶輸入爲數據。我試過這段代碼,但它不起作用。輸入驗證時出現捕獲錯誤
import sys
try:
newamount=int(input('Enter the new amount:'))
except ValueError:
print ("error")
我在做什麼錯?
如果用戶在我的菜單選項中輸入字符串而不是整數,那麼我需要添加一條錯誤消息,並且還會將用戶輸入爲數據。我試過這段代碼,但它不起作用。輸入驗證時出現捕獲錯誤
import sys
try:
newamount=int(input('Enter the new amount:'))
except ValueError:
print ("error")
我在做什麼錯?
TypeError
如果int()
的參數屬於錯誤類型,則會引發此問題。
假設你正在使用Python3的input()
返回值將始終是類型str
ValueError
如果型是好的,但內容不能被轉換爲int
提高。
要問了個遍,如果你想保持錯誤的計數,使用itertools.count
你應該使用while
循環
while True:
try:
newamount=int(input('Enter the new amount:'))
break
except ValueError:
print ("error")
和for
環
from itertools import count
for c in count():
try:
newamount=int(input('Enter the new amount:'))
break
except ValueError:
print ("error", c)
你的python 3和hw我能解決這個問題嗎? – user2912389
@ user2912389,您在alKid的回答中提到的錯誤不是來自您在此處的代碼。這是因爲你在函數中使用變量的方式。你應該問一個新的問題,並在那裏發佈完整的代碼。 –
@ user2912389,用'ValueError'替換'TypeError'後還有問題嗎? –
這是因爲將無效字符串(非數字)傳遞到int()
將引發ValueError
,而不是TypeError
。你雖然接近。
只要改變它,它應該很好。
except ValueError:
print('Error!')
如果你想要做的事與newamount
變量,我建議你做的try
塊:
try:
newamount=int(input('Enter the new amount:'))
tempfunction = amount + newamount
希望這有助於!
tempfunction = amount + newamount#將新金額添加到前一個金額 UnboundLocalError:分配之前引用的本地變量'newamount' >>> – user2912389
此錯誤消息出現 – user2912389
在您的try語句中? – aIKid
我認爲其更好在這些情況下要使用raw_input來手動輸入eval。 它是這樣的......
s = raw_input()
try:
choice = int(s)
except ValueError:
print ('Wrong Input!')
鑑於'print'上的parens,他可能使用Python3,它沒有' raw_input'('input'具有舊的'raw_input'行爲) –
ya python 3。我應該做些什麼不同? – user2912389
但是,即使在早期版本的python中,我們也可以使用括號。這裏是證明.. Python 2.4.3(#1,2012年10月23日,22:02:41) [GCC 4.1.2 20080704(Red Hat 4.1.2-54)] on linux2 鍵入「help」,「版權「,」信用「或」許可證「以獲取更多信息。 ('hi') hi –
兩件事情:你不需要導入SYS使用輸入()的raw_input或(),如果你正在使用python 2.7.x,請不要使用輸入()用於來自用戶的字符串輸入,請使用raw_input()。 input()會對傳遞給它的代碼進行評估,所以如果你這樣做了,惡意用戶可能會做一些類似「import os; os.system(」rm -rf /「)」或其他同樣危險的事情,並炸燬你的系統。 input()在python 3.x中是唯一安全的,絕對不要在python 2.7.x中使用它。 – reem