什么第三种好了,上节课我们帮助一个家庭实现了和睦,这节课我们作为美好生活创建者,来帮助另一个家庭实现和睦
如图:
print('打开购票网站')
# 你实现的代码
并且and
上面的复习我们只使用了一个条件,但如果没有父母的支持,恐怕小A同学的上海之行只能是美好的希望
在Python里我们如何实现并且这种条件呢?
tickets_avialable = True
parent_approved = True
if tickets_avialabe and parent_approved:
print('有票并且父母支持')
and在英文里是并且的意思,它是一个逻辑操作符,只有在左右条件都成立的情况下才返回True
课堂练习
作业批注
最简单的写法其实是这样
# 程序 005.00
def tour(tickets_avialable, classmates_avialable, parents_approved):
if tickets_avialable and classmates_avialable and parents_approved:
print('集齐3颗龙珠,愿望达成!')
# 有票,同学有时间,父母们同意
print('理想情况:')
tour(True, True, True)
# 没票, 同学有时间,父母们同意
print('看运气:')
tour(False, True, True)
木木同学写的逻辑是这样的
# 程序 005.01
def tour(tickets_avialable, classmates_avialable, parents_approved):
if classmates_avialable and parents_approved:
print('集齐2颗龙珠')
if tickets_avialable:
print('3颗龙珠,愿望达成!')
else:
print('没票哭唧唧')
# 有票,同学有时间,父母们同意
print('理想情况:')
tour(True, True, True)
# 没票, 同学有时间,父母们同意
print('看运气:')
tour(False, True, True)
# 有票,同学有时间,但父母们不同意
print('羡慕别人家孩子')
tour(True, True, False)
把不同的条件打印一下:
第三种情况其实是去不了的,那么,到底为什么会出bug呢?
这就回到了第三课我们讲的缩进,条件语句里的代码块缩进对应着不同的条件执行,比如
if first_condition:
print('第一个条件满足')
if second_condition:
print('第一个条件满足并且第二个条件满足')
if third_condition:
print('因为缩进发生了变化,这里的第一个条件无论满足与否,都会执行')
回到程序员笑话
# 自然语言的模糊性会导致不同的程序员有不同的理解
def met_seller(flag, obj):
if flag:
print(f'遇到{obj}的')
else:
print(f'没遇到{obj}的')
return flag
def buy_something(count, obj):
print(f'买了{count}个{obj}')
# 遇到卖包子和西瓜的
if met_seller(True, '包子'):
buy_something(3, '包子')
if met_seller(True, '西瓜'):
buy_something(1, '西瓜')
# 没遇到卖包子的,但遇到卖西瓜的
if met_seller(False, '包子'):
buy_something(3, '包子')
if met_seller(True, '西瓜'):
buy_something(1, '西瓜')
# 没遇到卖包子的,但遇到卖西瓜的
if met_seller(False, '包子'):
buy_something(3, '包子')
if met_seller(True, '西瓜'):
buy_something(1, '西瓜')
后2个组合条件一模一样,但缩进不同,输出也不同,这是Python编程里常会出bug的地方,同学们一定要多注意:
或者or
上面我们讲了Python的and,它表示并且的关系,在Python中或者的关系用or来表示
如果多个条件中有一个满足,整个条件表达式为真
那么如果我们把同学是否能去写成一个函数
# 程序005.02
def classmates_avialable(classmate_b, classmate_c, classmate_d):
return classmate_b or classmate_c or classmate_d
# 同学B, C, D都可以去
if classmates_avialable(True, True, True):
print('有一个同学可以去就可以去')
# 同学B无法去, C, D可以去
if classmates_avialable(False, True, True):
print('即使有人不能去')
我们就很方便地实现了有1个同学去就可以去的条件
绝不能 not
小A同学有点因为演唱会魂不守舍了,他的父母担心会影响他的期中考试,就使出家长们常用的杀手锏:如果其中考试没考好,演唱会想都别想
这就需要介绍逻辑条件的新成员 not
not 条件
not True # 变成了False
not False # 变成了True
课堂练习来了