1、三元表达式
三元表达式是 if ... else
分支结构的简化版,可以在一行语句之内表示分支结构,常用于简单的逻辑表达。合理使用三元表达式可以让代码变得更简洁易读。
2、逻辑运算
布尔运算利用逻辑运算符产生新的布尔值,上图中给出了“与”“或”“非”三种运算符的记忆口诀。
3、嵌套条件
if HP > 300:
if SP > 400:
print('使用技能“治愈术”')
else:
print('使用技能“吸血”')
else:
print('使用道具“红药水”')
4、if和if...else...的区别
HP = 350
# 代码示例:不使用 elif
if HP < 400:
print('选择装备:高坚果之铠')
if 400 <= HP < 800:
print('选择装备:高级巫师袍')
if HP >= 800:
print('选择装备:外婆的红斗篷')
# 代码示例:使用 elif
if HP < 400:
print('选择装备:高坚果之铠')
elif HP < 800:
print('选择装备:高级巫师袍')
else:
print('选择装备:外婆的红斗篷')
发现了吗?在 HP = 350
的情况下,若代码中不使用 elif
,则计算机需要进行三次条件判断;但在 if ... elif ... else
语句中,HP < 400
的条件一旦被满足,就会跳出条件分支,所以计算机只需要进行一次条件判断就够了。
前面说过,多路分支适合用来解决“多选一”的问题。在多个条件中只能满足一项,也就只能走一个分支,对这样的需求来说,使用 if ... elif ... else
语句无疑是更合适的。
if...会3个都执行判断,而if... elif ... else...只会执行2次,代码执行效率提升了
看下面的代码,你会发现什么?
HP = 350
if HP > 200:
print('选择装备:高坚果之铠')
elif HP > 400:
print('选择装备:高级巫师袍')
elif HP > 800:
print('选择装备:外婆的红斗篷')
这段代码的问题很明显:两个 elif
分支永远不会被执行。这是因为我们把最宽泛的条件 HP > 200
接在了 if
后面,一旦满足 HP > 200
,计算机就会打印 选择装备:高坚果之铠,然后跳出条件分支,elif
后的两个条件就不会被判断了。
有些萌新会误以为计算机会同时判断 HP > 200
,HP > 400
和 HP > 800
这三个条件,所以就会写出这样的代码。老师要提醒你啦,不是的哦,计算机会按照从上到下的顺序,依次检验 if ... elif ... else
语句中的条件是否成立。
你可以把 if
、elif
后的条件想象成一叠会员卡,我们在使用会员卡时,当然要先看优惠力度最大,使用条件最苛刻的“金卡”能不能用,再看优惠力度稍小,使用条件较为宽松的“银卡”能不能用,最后再考虑任何人都能使用的“无门槛 2 元红包”。
也就是说,如果我们想让条件判断的逻辑符合我们的预想,我们就需要让计算机先判断最苛刻的 HP > 800
是否成立,再判断 HP > 400
是否成立,然后再判断最容易成立的 HP > 200
。
我们在前面详细讲述了使用 elif
语句时的注意事项,现在我们再回过头来看看使用多个 if
语句的代码。在完成哪些需求时,我们需要用多个 if
来实现呢?其实,我们在前面已经用到过这样的代码了:
if AT > 1000:
weapon = '苹果炸弹'
else:
weapon = '万能魔杖'
if HP > 800:
cloak = '外婆的红斗篷'
else:
cloak = '高级巫师袍'
概括一下,如果计算机只需要做 一次多选一问题,就可以用 if ... elif ... else
语句将各个选项整合到一个多路分支中,在这个过程中,我们需要让计算机先检查最难满足的条件,这样才能保证程序运行与我们的预期相符,并且提高代码效率。
bool('') # False
bool(' ') # True
bool('a') # True
bool(0) # False
bool(1) # True
bool([]) # False
bool([1]) # True
bool({}) # False
bool({'a': 1}) # True