这篇文章我们将介绍Python的分支和循环语句的写法,并对函数稍作介绍,而这一篇文章过后我们基本上的语法的东西就讲完了。而我一贯的理念是,实践是最好的老师。本片文章结束后,我们就可以开始使用Python进行各种编程了。
事实上,编程的过程其实是其乐无穷的。在经历了十几年的编程生涯之后,其实会发现编程仍然是最有乐趣的事情之一。一般国内的程序员在30岁之后就会开始思考,主要是国内的研发环境和国内的教育确实是让我们有一些问题要去思考,比如是否仍然从事编程的工作。这点上我并不能给大家建议继续编程,但是Python还是可以的。闲来无事,写几行代码训练个神经网络模型,基本上都是机器干活,我们的事情其实并不太多。
言归正传,我们来继续今天的内容。
注意,由于排版的原因,我们用“----”来代替一个缩进。
分支
分支语句其实很简单,比如我们脑海里经常会有这样的逻辑:如果今天不下雨,我就去打篮球,否则我就在家里看电视。那么这个例子写成代码就是这样的:
if it_rains():
----go_play_basketball()
else:
----stay_home_watch_TV()
看,很简单吧。其实我们每一个不懂写程序的人每天都在脑海里写程序,只是我们自己没有感觉到,Python的易学易用性就很适合每个人来学习。
一个通用的分支程序流程如下图:
在Python语言里面,将所有非零和非空的值都定义为True。并且在Python里面支持如下类型的代码结构:
if ...... :
----statements
else:
----statements
if ...... :
----if ...... :
--------statements
----else :
--------statements
else :
----statements
if ...... :
----statements
elif ...... :
----statements
else :
----statements
我们可以看到,分支语句还支持嵌套,当然了,比如某个小女孩脑海里有这么一个计划,找妈妈要糖果吃,如果妈妈不给,那就再要蛋糕,如果蛋糕也不给,就再要求买个玩具。程序在3岁的小女孩的脑海里,就是这么简单,其实程序无处不在。
当然分支语句也可以写成单行,虽然我不赞成这样写,但是还是给出一个示例给大家。
if we_are_good_here(): we_will_go_to_next_topic()
循环
循环其实也很简单,大部分同学都已经在脑海里写过循环语句了。比如:如果她不答应做我女朋友,我就一直追下去。类似的情形还有很多很多,就不一一举例了。比如我们有如下一段程序:
i = 0
while i < 7:
----i = 1
----print(i)
我们会发现这段代码打印出来的结果是:
1
2
3
4
5
6
7
一个基本的循环流程如下:
Python中的循环语句包括while循环和for循环,并且循环之间可以嵌套。上面我们已经看到了while循环的例子,我们来分别看一下for循环和循环嵌套的示例:
for i in (0, 8):
----print(i)
其运行结果为:
0
1
2
3
4
5
6
7
我们再来看一个循环嵌套的例子,无论是for循环还是while循环都是可以互相嵌套的,我们仅仅来举一个例子。
i = 0
while i < 3:
----for j in (0,2):
--------print(i, j)
--------j = 1
----i = 1
其运行结果为:
0, 0
0, 1
1, 0
1, 1
2, 0
2, 1
对于循环,还有循环控制语句。Python中的循环控制语句如下,
break
continue
其中,break用来跳出一层循环,也就是说如果有嵌套时,它只跳出一层;而continue表示跳出当次循环进入到下一次循环。
我们来看一个例子。
i = 0
while True:
----i = 1
----if i == 3:
--------continue
----if i >5:
--------break
----print(i)
我们可以看到其结果为:
1
2
4
5
看到这里,大家应该明白Python如何来写分支和循环语句了。
函数
函数其实很简单,我们在上述代码中看到的print就是一个函数了!那么我们如何来定义一个函数呢?我们来看下面的例子,def表示定义一个函数,基本语法了;first_function是函数名;para1则是函数的参数,个数可以多个,也可以没有参数,para2也是,不过我们给它一个默认值,也就是说你在调用这个函数的时候可以省略para2,函数会默认para2为3;return表示函数的返回值,当然也可以没有返回值;:
def first_function(para1,para2=3):
----ret = para1 para2
----return ret
我们来看一下如何调用这个函数:
ret = first_function(5, para2=4)
print(ret)
ret = first_function(5)
print(ret)
我们可以看到结果分别为:
9
8
Python的函数的参数可以传值,也可以传引用。和C语言里不一样的是,C是纯纯的值传递,如果要修改函数外的值,那么要传递指针进去,但是即便是指针,其实也是值传递,不过传递的是一个地址。我们来看Python的一个例子。
listA = [1, 2, 3, 4, 5]
a = 3
def second_function(para):
----para[2] = 'Hi'
def third_function(para):
----para = 4
second_function(listA)
print(listA)
third_function(a)
print(a)
我们会发现其运行结果为:
[1, 2, 'Hi', 4, 5]
3
接下来我们具体来介绍一下Python函数参数的几种类型。
Python对这几类类型也有相应的名字,我们不管它,我们只分两类就可以,固定参数和可变长参数。我们分别来看一个写法和用法。
def fourth_function(para1, para2, para3=3):
----return para1 para2 para3
ret = fourth_function(1,2)
print(ret)
ret = fourth_function(para2=2, para1=1, para3=3)
print(ret)
ret = fourth_function(1,2,3)
print(ret)
ret = fourth_function(1,para2=2,para3=3)
print(ret)
大家可看到,这几种调用方法都可以,可见Python的写法是很灵活的。接下来我们来看看可变参数的写法。
def fifth_function( para1, *paratuple ):
----print(para1)
----for para in paratuple:
--------print(para)
fifth_function(1)
fifth_function(1, 2, 3, 4, 5)
我们可以看到其运行结果分别为:
1
和
1
2
3
4
5
基本上我们关于分支、循环和函数的话题到此就讲完了,基本上学习编程并不是一件很难的事情。用Python来说的话,甚至是简单的有点过分的。任何一门编程语言的学习,最重要的还是多写多读代码,但在整个学习的节奏和方向的把控上,一个好的老师是非常必要的。我们现行的很多的书籍也好、教程也好,编辑者可能甚至没有编程经验,所以大家需要花很多的时间去看很多冗余的内容,人的精力是有限的,高效的学习是非常重要的。
,