[英]Try-Except block in python
這是我正在運行的代碼,基本上它只是要求用戶輸入數字,然后輸入“done”后,計算它們的平均值:
average = 0
total = 0.0
count = 0
while True:
num = raw_input()
if num == "done":
break
try:
int(num)
total = total + num
count = count + 1
except:
print "bad data"
average = total / count
print total, count, average
我的問題是,即使我輸入一個整數,仍然執行除了塊(即我得到“壞數據”作為輸出),你能告訴我為什么會這樣嗎?
int(num)
這將返回一個整數,但您不會將num重新分配給此整數。 你需要這樣做
num = int(num)
該行有效。
另請注意,您應該只打印異常,以獲取更多信息:
try:
num_int = int(num)
total = total + num_int
count = count + 1
except ValueError as e:
print e
我們專門捕獲ValueError
的原因是因為捕獲您期望的異常(並處理特定異常的情況)是非常好的做法,而不是盲目地捕獲所有內容。
int(num)
不會在適當的位置轉換num
,您必須分配結果。 將行更改為:
num = int(num)
而你應該是金色的。
int(num)
不會改變num
; 它返回一個新值。 如果要更改它,可以將該新值重新分配給num
。
num = int(num)
捕獲特定錯誤並盡可能多地移出try
塊以避免隱藏有用的異常信息也是一個好主意。
average = 0
total = 0.0
count = 0
while True:
num = raw_input()
if num == "done":
break
try:
num = int(num)
except ValueError:
print "bad data"
continue
total += num
count += 1
average = total / count
print total, count, average
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.