06.程序员买西瓜和打孩子,趣说python的条件语句和循环语句

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