在开始进行控制流之前,先要学习一下如何将程序保存到文件中。在前面的学习过程中所有的代码都是在命令行环境中运行的,输入一行代码 python 解释器输出一个结果。当我们开始控制流的学习时我们单次运行的代码不止一行,这就不再适用命令行一行一行输入的情况了,这时我们就需要将我们的程序保存到一个文件中,再使用 python 一次运行这个文件就可以了。python 的文件以 .py 为文件后缀。我们来看一个简单的 python 文件内容
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'print hello world'
print('Hello World!')
将以上内容保存为,执行命令程序将输出。
接下来来看下文件内容的含义:
第一行和第二行是注释行。第一行注释可以让该文件在安装有 python3 的 Unix/Linux/Mac 设备上运行,第二行注释表示该文件本身使用标准 UTF-8 编码。
第三行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释。
第五行是该文件真正的代码行,在程序运行过程中改行输出字符串。
在 python 中以开头的为注释内容,python 解释器在执行过程中会跳过该行。
控制流
截止目前为止,所有的程序都是按照代码顺序来执行的,而实际使用中往往是需要根据输入来执行不同的操作并输出不同的结果,者就是今天我们要看的控制流,在 python 中控制流主要分为:条件判断和循环。
条件判断
计算机之所以可以协助人类做许多工作(且做的比人类更快更好),一个很大的原因是它可以依据输入作出条件判断。在 python 中条件判断主要有 if 语句、else 语句和 elif 语句来完成。我们先来看一下使用示例:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
age=int(input('please enter your age:'))
ifage>=18:
print('you are an adult')
elifage>=6:
print('you are an teenager')
else:
print('you are an kid')
在以上示例中,使用 if 语句、else 语句和 elif 语句来判断输入的年龄。程序会依次执行 if 语句、elif 语句、else 语句,当该语句判断为 True 时,执行该判断对应的语句块并跳过后面的判断语句。
elif 实际是 else if 的缩写,同时可存在多个 elif 语句。
在中,表示条件判断语句,表示需要判断的条件,表示判断语句的结束,后面是语句块。每个判断语句后总是有一个语句块,在 python 中语句块的定义如下:
Python 开发者有意让用错了缩进规则的程序不能通过编译,以此来强迫程序员养成良好的编程习惯。并且Python 語言利用缩进表示语句块的开始和结束(Off-side 规则),而非使用花括号或者某种关键字。增加缩进表示语句块的开始,而減少缩进排则表示语句块的结束。缩进成为了语法的一部分。例如 if 语句.
根剧 PEP 的规定,必须使用 4 个空格来表示每级缩进。使用 Tab 字符和其它数目的空格虽然都可以编译通过,但不符合编码规范。支持 Tab 字符和其它数目的空格仅仅是为兼容很旧的 Python 程式和某些有问题的编辑程式。
根据以上定义,python 语句块需满足以下条件:
通过缩进的来表示语句块的开始和结束。
缩进必须使用四个空格。
循环
在程序的执行过程中往往需要需要重复执行一段代码以完成相应的计算任务,这时就需要用到循环语句,在 python 中循环语句有两种,第一种是 while 循环,只要条件满足就不断运行,直至条件不满足时退出;第二种是 for...in 循环,依次遍历序列中的每个元素。
有循环就要有退出,再循环中处理条件不满足是退出以外是否还有其他方式可以退出循环呢,这是当然,我们还可以通过 break 语句或 continue 语句来退出循环。break 语句用以中断循环语句,直接执行循环语句块以后的内容。continue 语句用来跳过循环语句块中的剩余语句,开始下一次循环执行。
while 循环
while 语句主要用来执行一段重复的代码,比如我们要计算 100 以内的数的和
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
sum=
n=
whilen
sum+=n
n+=1
print(sum)
在循环内部变量 n 不断加 1,直到 n 大于等于 100 时不再满足的条件 while 循环终止,执行 print 语句。
for 循环
for 循环主要用来迭代序列中的元素,我们来看一个简单的示例
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
names= ['Michael','Bob','Tracy']
fornameinnames:
print(name)
执行以上代码可以看到 print 语句依次打印出 names 的元素。
在 while 循环中我计算了100以内的整数的和,我们是否可以用 for 循环来实现相同的内容,答案是肯定的,来看一下代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
sum=
forxinrange(,100):
sum+=x
print(sum)
break 和 continue 语句
break语句用来终止循环的执行,continue 语句用来中断当前循环的执行开始下一次循环。我们通过以下代码来看下二者之间的区别
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
sum=
forxinrange(1,20):
if(x==10):
break
print(x)
sum+=x
print('sum = %d'%(sum))
sum=
forxinrange(1,20):
if(x==10):
continue
print(x)
sum+=x
print('sum = %d'%(sum))
执行以上代码,输出结果如下
1
2
3
4
5
6
7
8
9
sum=45
1
2
3
4
5
6
7
8
9
11
12
13
14
15
16
17
18
19
sum=180
可以看出在使用 break 语句时,for 循环直接终止执行,并退出循环语句块执行语句块后的 print 语句。当使用 continue 语句时仅仅跳过了时的情况,for 循环继续执行后面的内容。
领取专属 10元无门槛券
私享最新 技术干货