004.条件语句

经典程序员笑话

让我们从一个笑话开始

老婆给当程序员的老公打电话:“下班顺路买三个包子带回来,如果看到卖西瓜的,买一个。”

当晚,程序员老公手捧一个包子进了家门。。。

老婆怒道:“你怎么就买了一个包子?!”

老公答曰:“因为看到了卖西瓜的。”

我们先看看ChatGPT3.5是怎么理解这个笑话的

和没有幽默感不懂程序员的AI一样,那些没学过编程的同学一般也很难理解这个笑话的笑点在哪里,让我们改一下笑话,把它变成一个Python程序

# 程序 004.01
def buy_dumpling(count):
    print(f'买了{count}个包子')
    
meet_watermelon_seller = True

if meet_watermelon_seller:
    buy_dumpling(1)
else:
    buy_dumpling(3)

这段程序涉及到4个新的概念

  • 带参数的函数

  • 格式化字符串f-string

  • 布尔变量

  • 条件语句

带参数的函数

带参数的函数时定义如下:

def 函数名(参数1, 参数2, 参数3):
    代码块

就像上面的buy_dumpling函数,它的参数只有一个count,在调用函数时传入不同的参数,就可以实现买不同数量的包子

格式化字符串f-string

之前我们介绍的都是固定的字符串,如果想在输出字符串时变化怎么办?

这就用到了格式化字符串,它的写法如下:

f'字符串内容{变量}字符串其他内容'

举个例子

v = 1
print(f'我中间有一个变量{v},它的值是1')

v = 2
print(f'我中间有一个变量{v},它的值现在变成了2')

问题:现在改写buy_dumpling函数,改成buy_something,实现买不同东西的目标

比如, buy_somthing(3, ‘包子'),输出结果为 买了3个包子

布尔变量

什么是变量

举个例子

a = '我是一个字符串变量'
print(a)
a = '你可以认为a是我的名字,我的作用是容纳一个内容'
print(a)
a = '其实在这短短的三行代码里我已经发生了3次内容变化'
print(a)
a = '女孩的心思你别猜,猜来猜去你也猜不明白'
print(a)

做个小练习

问题:不运行上面的程序,你说一下打印结果都是什么?

回答:发送答案到微信群

变量可以有不同的类型

除了上面的字符串类型变量,我们还有很多数据类型可以放在变量里,比如布尔变量

b = True
not_b = False

在Python里,布尔变量有2个值True和False,⚠️首字母是大写的,很多新同学在输入时会犯错

布尔变量通常来表示一个条件的真假或是否成立,比如

meet_watermelon_seller = True # 表示遇到了卖西瓜的

那么我们接下来就可以讲Python的条件语句了

if 条件:
    条件成立的代码块
else:
    条件不成立的代码块

注意语句之后的冒号和代码块的缩进,初学者一般会在这个地方犯错

让我们回到老婆让老公买东西的问题

老婆给当程序员的老公打电话:“下班顺路买三个包子带回来,如果看到卖西瓜的,买一个(西瓜)

其实这里的本质是程序员在理解需求的时候,逻辑上犯了错,因为自然语言的不严谨,我们人类在沟通上依赖很多假设,没有编程背景的人在听到上述需求时,自然会「买一个」理解为买一个西瓜

但程序员会按照自己的思维定式把忽略掉的对象脑补成包子:

“下班顺路买三个包子带回来,如果看到卖西瓜的,买一个(包子)

也就是我们看到的程序004.01

课后作业来了

问题:修改程序004.01,让它满足老婆的需求,营造和睦的家庭氛围

回答:用自己熟悉的Python IDE或在线Python游乐场编写程序,截图发至微信群

Last updated