Python 多个if-else的Raise ValueError
每当城市无效时,我想提出ValueError。如何做到这一点?我对您的代码进行了一点重构,但它展示了如何提出: 样本输出:Python 多个if-else的Raise ValueError,python,python-2.7,Python,Python 2.7,每当城市无效时,我想提出ValueError。如何做到这一点?我对您的代码进行了一点重构,但它展示了如何提出: 样本输出: def validate_city(city): city = city.title() # Capitalize properly # use set(["Pune", "Delhi"]) for backwards-compatibility valid_cities = {"Pune", "Delhi"} if city in val
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))
验证城市(“高谭市”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第7行,位于纽约市
ValueError:无效的城市“Gotham city”
>>>新德里市
这是德里市
注:
- 集合用于查找有效的城市,这比许多行if语句更易于维护
- 一套是
- 该方法用于正确大写城市名称。在验证用户输入之前规范化用户输入是一种很好的做法。即把“德里”变成“德里”,“纽约”变成“纽约”等等
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))
验证城市(“高谭市”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第7行,位于纽约市
ValueError:无效的城市“Gotham city”
>>>新德里市
这是德里市
注:
- 集合用于查找有效的城市,这比许多行if语句更易于维护
- 一套是
- 该方法用于正确大写城市名称。在验证用户输入之前规范化用户输入是一种很好的做法。即把“德里”变成“德里”,“纽约”变成“纽约”等等
city='some city'
如果城市==“浦那”:
打印“这是浦那城”
elif city==“德里”:
打印“这是德里市”
其他:
提升值错误(“无效城市”)
回溯(最近一次呼叫最后一次):
文件“”,第8行,在
提升值错误('无效城市')
ValueError:无效城市
城市='某个城市'
如果城市==“浦那”:
打印“这是浦那城”
elif city==“德里”:
打印“这是德里市”
其他:
提升值错误(“无效城市”)
回溯(最近一次呼叫最后一次):
文件“”,第8行,在
提升值错误('无效城市')
ValueError:无效城市
这取决于您想如何处理这种情况。但是,您将使用该命令
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
这取决于你想如何处理这种情况。但是,您将使用该命令
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
当城市无效时,您的代码不向我显示消息“无效城市”,它将引发异常。你的脚本显示了什么?请查看编辑后的帖子,看看你是否在做我正在做的事情。我在其他地方使用了catch,这就是为什么它没有显示消息。当城市无效时,你的代码不会向我显示消息“Invalid City”。它将引发异常。你的脚本显示了什么?请查看编辑后的帖子,看看你是否在做我正在做的事情。我在其他地方使用了catch,这就是为什么它没有显示消息它对我有用。你能发布你正在运行的确切代码,包括你的测试输入吗?如果你在
try/catch
块中,错误可能会被丢弃。现在你可以自己尝试这个函数,我还用一些示例用法更新了示例。细节不多,但在这种情况下,我通常会使用set而不是list来提高查找效率。即使对于非常短的列表/集合,基于我使用timeit
的迷你基准测试,一个包含两个项目的集合/列表和一个失败的查找加上一个成功的查找,集合速度也会提高约25%。如果只运行此函数一次,它将只为您节省约200纳秒的时间-重写函数、对其进行基准测试等将花费您更长的时间。过早优化是。。。有趣,对我有用。你能发布你正在运行的确切代码,包括你的测试输入吗?如果你在try/catch
块中,错误可能会被丢弃。现在你可以自己尝试这个函数,我还用一些示例用法更新了示例。细节不多,但在这种情况下,我通常会使用set而不是list来提高查找效率。即使对于非常短的列表/集合,基于我使用timeit
的迷你基准测试,一个包含两个项目的集合/列表和一个失败的查找加上一个成功的查找,集合速度也会提高约25%。如果只运行此函数一次,它将只为您节省约200纳秒的时间-重写函数、对其进行基准测试等将花费您更长的时间。过早优化是。。。有趣。