APP下载

控制结构与函数

2021-11-25叶鹏沈晓恬

科学24小时 2021年11期
关键词:老祖菩提分支

叶鹏 沈晓恬

在上一期,菩提老祖传授了python的基本运算符,但只掌握这些是远远不够的。菩提老祖用拂尘指指悟空,继续他的教学工作。

“如你与人争斗时一样,不可能只使用一招基本招式,也不可能每次使用一模一样的打法。在程序中,也必然要用到一些结构,来控制程序如何执行各种操作,这种结构称为控制结构。”

顺序结构

“我不是很明白,”悟空似懂非懂,眼中露出些许迷茫之色。

“待我仔细讲解一下。”

“程序中一般有3种控制结构,顺序结构、分支结构、循环结构。顺序结构最容易理解,一行行程序按顺序执行,做完一行,再做下一行。顺序结构不需要特别的控制语句。”

悟空点头表示明白。

“分支结构中,需要加判断条件,判断满足何种条件时做什么事情。”

分支结构

“那么,吃桃子的时候,判断桃毛是否蹭干净,就是分支结构语句?”悟空问道。

“不错!”菩提老祖接着说,“Python中的分支结构语句使用if...elif...else的方法来表达。”

# 分支结构

# if

a = 1

if a == 1:

print('此时a等于1')

# if...else

a = 2

if a == 1:

print('此时a等于1')

else:

print('此时a不等于1')

# if...elif...else

a = 2

if a == 1:

print('此时a等于1')

elif a == 3:

print('此时a等于3')

else:

print('此时a等于2')

# if...elif...elif...else

a = 2

if a == 1:

print('此時a等于1')

elif a == 3:

print('此时a等于3')

elif a == 4:

print('此时a等于4')

else:

print('此时a等于2')

# if嵌套

a = 2

b = 5

if a == 2:

if b == 3:

print('此时a等于2,b等于3')

else:

print('此时a等于2,b不等于3')

else:

print('此时a不等于2')

如果a等于1,打印此时a等于1。

如果a等于1,打印此时a等于1;否则打印此时a不等于1。

如果a等于1,打印此时a等于1;又如果a等于3,打印此时a等于3;否则打印此时a等于2。

如果a等于1,打印此时a等于1;又如果a等于3,打印此时a等于3;又如果a等于4,打印此时a等

如果a等于2时:b等于3,打印此时a等于2,b等于3;否则打印此时a等于2,b不等于3。否则(如果a不等于2)打印此时a等于2。

“简单!”猴子挺得意。

“你这猴头可得看仔细,if或者elif后面跟的表达式里,判断是否相等时,可得用两个等号。这是一个比较运算符。”

“师父不说我还真没注意呢!”悟空挠着后脑勺讪笑着。

“if和elif后的条件表达式如果成立,则会执行此分支程序;如果不成立,则不会;如果所有条件都不成立,则会进入else分支。”

“第三种控制结构称为循环结构,如果同样的操作被反复执行,便可以使用循环结构。”菩提老祖继续讲解。

循环结构

“师父,这俺就不明白了,既然同样的操作被反复执行,为什么不把同样的代码多写几遍,反正也不费事。”悟空发问。

菩提老祖一笑:“写程序时可不一定知道要执行几次,万一要执行个千百次,你还真在程序中抄那么多次?而且使用循环结构,你可以动态地控制循环的次数。”

“此话怎讲?”猴子问。

“比如一段吃桃子的程序,有一筐桃子,你要用程序把它吃完。如果写程序的时候,已经规定能吃的桃子个数,那么筐里的桃子多了你会吃不完,少了你又不够吃。只有在程序开始运行之后,根据筐里桃子的数量来决定吃几个桃子,才会刚刚好。”

“哦!”猴子大彻大悟,“要是现在有一筐桃子就太好了!”

在Python中,循环结构大致可以分成两种,一种是遍历循环,一种是无限循环。

所谓遍历循环就是遍历某一个结构形成的循环运行方式。具体说来,比如有一个列表,里面包含了1~20的数字,基于这个列表进行的遍历循环,就会执行20次。

无限循环是由条件控制的循环方式,反复执行代码,一直到不满足循环条件为止。

以猴子吃桃子的故事来举例,遍历循环就是先看看筐里有几个桃子,挨个儿拿出来吃。无限循环就是看看筐里还有没有桃子,有就拿出来吃,没有就停止循环。

遍历循环的语法使用for...in...,无限循环的语法使用while。

[list1 = [1,2,"a"]

for i in list1:

print(i) ]

[i = 0

while i<3:

print(i)

i = i + 1 ]

Python中for和while并没有本质的区别,只是实际使用中针对性不同。

如果执行过程中要退出循环,可以使用break和continue语句。break会退出整个循环部分代码,continue則会跳过当前这次执行的代码,继续下一次循环。

break:

[i=0

while i<5:

i=i+1

if i%2==0:

print("把它吃掉!")

break

print("擦擦桃子,") ]

continue:

[i=0

while i<5:

i=i+1

if i%2==0:

print("把它吃掉!")

continue

print("擦擦桃子,") ]

说到这里,性急的猴子觉得自己已经掌握了Python的基本用法,迫不及待地想要试试手。

菩提老祖怎会不知道这猴子的心思,不过还有点重要的东西没有讲完。

“悟空,想要成为高手,光是上面讲的内容还不够。”

这话吊起了猴子的好胜心。“哦?还有什么?”

“所谓高手,都有自己的绝招,这绝招通常是由一串基本招式构成,高手们将其练熟,在某些特定场合一并使出。你当年不是有一招叫做“万棍朝宗”吗?在瞬间挥出一万棍,打击在一个点上。”

“嗯,师父讲的没错!Python中也有这样的绝招吗?”

“Python中有个东西叫作函数,这就相当于绝招。”菩提老祖接着说道,“函数是组织好的,可重复使用,用来实现单一或相关联功能的代码段。”

“明白,函数就是带名字的代码块。好比俺老孙平时练熟一串招式,这就是一个代码块,俺给它起个名字叫万棍朝宗,就是函数名了。等对敌时候,俺大喝一声,把这大招使出来,这就是调用函数!”悟空又兴奋起来。

“孺子可教也。”菩提老祖捻须微笑。

Python使用def语法来定义函数。其中可以没有参数和返回值。函数名的要求和变量名的要求一样,首字以字母和下划线开头,后续由中英文字母、下划线和数字组成,大小写敏感。

[def 函数名 (参数):

功能代码

return 返回值 ]

下面是一个函数的简单例子:

[def wangunchaozong(t):

for i in range(t):

print("打一棍")

return i+1

goal = 10

actual = wangunchaozong(goal)

print("实际打了几棍?")

print(actual)

]

Python自带大量常用函数,文中出现的最常用的print函数就被用来将变量显示到输出窗口中。同时世界上众多的Python开发者们也贡献出巨量的函数库,可以方便地让人们实现各种功能。

具体如何实现?请看下回分解!

猜你喜欢

老祖菩提分支
惊蛰
基于git工具的多分支并行开发上线流程
用“分散数论”对“哥德巴赫猜想”的初等证明
我的家
菩提祖师为何赶走孙悟空
老街口
游老祖寺
含有二阶幂零鞍点的双同宿环附近的极限环分支
菩提之心
温馨的家