我有這段代碼:
while True:
try:
start = int(input("Starting number: "))
fin = int(input("Ending number: "))
amount = int(input("Count by: "))
except ValueError as verr:
print('error : ', verr,'\n restarting ....')
else:
break
我想攔截''剛剛擊中的輸入return作為退出except塊內回圈的信號。除了決議 ValueError 之外,有沒有辦法獲得引發 ValueError 的值(我不知道 int() 如何能夠回傳 ValueError 并且也不知道后者)__repr__,例如:
invalid literal for int() with base 10: 'èèè' 或者我要攔截的那個
invalid literal for int() with base 10: ''?
uj5u.com熱心網友回復:
您可以在轉換之前保存輸入值并使用它來檢查。
while True:
try:
_start = _fin = _amount = None
start = int(_start:=input("Starting number: "))
fin = int(_fin:=input("Ending number: "))
amount = int(_amount:=input("Count by: "))
except ValueError as verr:
if _start == "" or _fin == "" or _amount == "":
break
print('error : ', verr,'\n restarting ....')
else:
break
uj5u.com熱心網友回復:
我想我只是將輸入作為字串獲取,然后''在轉換為int和catch 之前放置一個 if 陳述句來捕獲 case 或其他任何內容ValueErrors。但是,如果您是簡潔代碼的忠實擁護者,這可能會冒犯。
或者正如你所說,用類似的東西決議repr.split(':')[-1]
uj5u.com熱心網友回復:
由于錯誤是在沒有傳遞函式引數的情況下引發的并且被格式化為字串,因此無法直接從錯誤中獲取值,您可以將其單獨存盤為變數,然后直接檢查變數,如下所示:
while True:
data = {"start": 0, "fin": 0, "amount": 0}
try:
for i in data:
x = input(f"Enter the value for {i}")
x = int(x)
data[i] = x
except ValueError:
if x == "":
break
uj5u.com熱心網友回復:
其他人已經為您的問題發布了可能的解決方案,但直接回答您的問題。
問題:Python ValueError 是否可以在不決議字串的情況下獲得不正確的值?
答:不,不是。ValueError 僅存盤訊息字串,沒有其他內容。str(verr)您可以通過或獲取該訊息verr.args[0]。該int(...)呼叫已經創建了完整的訊息,并且不會ValueError以任何方式將其輸入字串單獨傳遞給。:/
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/512967.html
上一篇:如何捕獲匯入模塊中引發的錯誤
