我认为这可能是一个非常初学者的问题。但我只是不知道如何解决它。 (请不要给我减去,我试图搜索,但没有找到。)
我的代码:
num = 5
if num == 3:
print 'boss'
elif num == 2:
print 'user2'
elif num == 5:
print 'user5'
elif num == 1:
print 'worker'
elif num > 0: #I also want to print this one. Because num is bigger than 0
print 'error'
else:
print 'roadman'
期望的结果是:
user5
error
但它只显示结果:
user5
我的问题:如何确保{strong>所有 elif
标准被认为是?
答案 0 :(得分:2)
这样的if-elif-else
结构是相互排斥的,并且不允许在条件中使用,因此只需使'error'
语句具有自己的if
num = 5
if num == 3:
print 'boss'
elif num == 2:
print 'user2'
elif num == 5:
print 'user5'
elif num == 1:
print 'worker'
else:
print 'roadman'
if num > 0:
print 'error'
答案 1 :(得分:2)
您的问题询问如何评估所有elif
语句。正如@ juanpa.arrivillaga和@m_callens所描述的那样,答案是将它们转换为if
语句。
在评论中,你会问是否有更好的方法,我认为更好的方法是使用键值映射。根据您的问题,此映射可能是字典:
mapping = {1: 'worker',
2: 'user2',
3: 'boss',
5: 'user5'}
然后我们可以用一个字典查询替换大多数if
语句:
num = 5
print mapping[num]
但是,如果字典中不存在密钥,则会引发KeyError
。我们可以通过try-except
块解决这个问题。 try
部分将尝试执行该块中的任何内容。如果遇到KeyError
(即字典中不存在该键),它将执行except
块中的任何内容。这也照顾了你想要显示“roadman”的情况。
try:
print(mapping[num])
except KeyError:
print("roadman")
如果您希望num > 0
显示“错误”,我会使用if
语句。把所有这些放在一起,你有
mapping = {1: 'worker',
2: 'user2',
3: 'boss',
5: 'user5'}
num = 5
if num > 0:
print("error")
try:
print(mapping[num])
except KeyError:
print("roadman")
输出结果为:
error
user5