if city == 'Chennai':
print "this is Chennai city"
elif city == 'Delhi':
print "this is Delhi city"
else:
print "invalid city"
每當城市無效時,我想提高ValueError。怎麼做 ?提高多個if-else的值錯誤
if city == 'Chennai':
print "this is Chennai city"
elif city == 'Delhi':
print "this is Delhi city"
else:
print "invalid city"
每當城市無效時,我想提高ValueError。怎麼做 ?提高多個if-else的值錯誤
我重構你的代碼一點點,但它說明了如何提高一個ValueError
:
def validate_city(city):
city = city.title() # Capitalize properly
# use set(["Pune", "Delhi"]) for backwards-compatibility
valid_cities = {"Pune", "Delhi"}
if city in valid_cities:
print "This is %s city" % city
else:
raise ValueError("Invalid city %s" % repr(city))
輸出示例:
>>> validate_city("gotham city")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 7, in validate_city
ValueError: Invalid city 'Gotham City'
>>> validate_city("delhi")
This is Delhi city
注:
title()
方法用於正確使城市名稱大寫。在驗證之前正常化用戶輸入是一種很好的做法。即把「德赫利」變成「德里」,「紐約」變成「紐約」等等。city = 'some city'
if city == 'Pune':
print "this is pune city"
elif city == 'Delhi':
print "this is Delhi city"
else:
raise ValueError("Invalid City")
Traceback (most recent call last):
File "<pyshell#2>", line 8, in <module>
raise ValueError('Invalid City')
ValueError: Invalid City
這取決於您希望如何處理情況。然而你會使用命令
raise ValueError
點在哪裏,你確定這是一個無效的城市
validcities = ('Pune', 'Delhi', 'Any other valid city')
try:
if city not in validcities:
raise ValueError
print 'This is', city, 'city'
except ValueError:
print city, ' is an invalid city'
# perform other invalid city here
它沒有顯示ValueError異常味精 – Patrick
它爲我工作。你能發佈你正在運行的確切代碼,包括你的測試輸入嗎? –
如果你在'try/catch'塊中,這個錯誤可能會被丟棄。 –