06.程序员买西瓜和打孩子,趣说python的条件语句和循环语句
转自同名 微信公众号
程序员小A下班回家,老婆打来电话
“家里来客人了,去菜市场买个西瓜。如果有西红柿的话,买两个。”
结果菜市场有西红柿,但小A却买了2个西瓜,没有买西红柿。而小A老婆的意思显然是如果没有西红柿就买1个西瓜,如果有西红柿,就买1个西瓜和2个西红柿。
为了澄清这个误会,我们先介绍一种用图形来表述问题的方法:
流程图
。因为图形往往比文字更清晰,更容易理解。
在上面的流程图里。有4种不同的图形。
黑色实心圆
:表示流程的开始。
黑色非实心圆
:表示流程的结束
橙色长方形
:表示一个具体的行动,做一件具体的事情。
绿色菱形
:表示一个判断。
从流程图可以清晰地发现,小A老婆的意思是先买西瓜,然后看是否有西红柿,有的话,买2个西红柿;而小A则把是否有西红柿这个判断条件作为买1个还是2个西瓜的条件。
现实生活中,我们经常需要根据判断条件结果的不同而采取不同的行动。在python里,这称为 条件语句 。
条件语句
如下图,python里的条件语句和实现中条件判断的逻辑是完全一致的。
具体的python语法是:
if 判断条件:
执行语句1……
else:
执行语句2……
以小A买西瓜为例,我们假设函数 haveTomatoes()可以返回是否有西红柿,那么具体的程序就是
if haveTomatoes():
print('buy 2 watermelons')
else:
print('buy 1 watermelon')
条件语句 的语法很简单,不过还是有几点需要注意:
1. if 后面的判断条件语句一定要返回True或者False。如上一篇我们学习过的 比较运算 就可以作为判断条件语句。
比如,比较a,b两个数字的大小,如果a大于b,则打印“a比b大”,否则打印“a比b小”。
a = 1/3
b = 0.3
if a>b :
print('a is bigger than b.')
else:
print('a is smaller than b.')
2.书写的格式,冒号和缩进。if 和 else后面别忘记冒号。冒号下面的语句要 缩进 。(在我们的开发环境里,打了冒号之后回车换行,会自动缩进。)
3.如果有多个条件分支时,可以用如下的语法。
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……
循环语句
现实生活中,除了判断逻辑外,还有一种常见的逻辑,就是当条件满足的时候,反复做相同的事情。
程序员小A的儿子很调皮,今天又闯祸了。气急之下,小A要揍儿子,而小A老婆则在一旁煽风点火,还帮着计数,说要揍满100下。
还是用如下的 流程图 直观地说明。
现实中,每次揍孩子之前,都需要先判断一下,是否已经揍满了100下,如果没有,才继续揍,否则就结束。
一定要注意,在橙色框里,要把揍的次数+1,否则就会永远揍下去,在python里,我们称为 死循环 。
在python里,用 循环语句 来表示现实生活中的循环逻辑。
python里的循环语句有2种方法:
while循环,for循环
。
以小A打孩子为例,while循环的写法如下。
count = 0