13 流程控制
三大流程控制语句:
(1) 顺序控制:程序从上到下逐行的执行,中间没有任何判断和跳转。
(2) 分支控制
(3) 循环控制
说明:控制语句可以使用相互嵌套。
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的
语法格式:
if 条件表达式1:
语句1/语句块1
elif 条件表达式2:
语句2/语句块2
.
.
.
elif 条件表达式n:
语句n/语句块n
[else:
语句n+1/语句块n+1
]
在False、0、0.0、空值None、空序列对象(空列表、空元祖、空集合、空字典、空字
符串)、空range 对象、空迭代对象等情况下,条件表达式的值为False,其他条件为True。
示例:
score = int(input("请输入0-100 之间的整数:"))
grade = ''
if score>100 or score<0:
score = int(input("输入错误!请重新输入"))
else:
if score>=90:
grade = "A"
elif score>=70:
grade = 'B'
elif score>=60:
grade = 'C'
else:
grade = 'D'
print("分数为{0},评级为{1}".format(score,grade))
for循环提供了python中最强大的循环结构(for循环是一种迭代循环机制,而while循环是条件循环,迭代即重复相同的逻辑操作,每次操作都是基于上一次的结果,而进行的)
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for循环的一般格式如下:
for iter_var in iterable: suite_to_repeat注解:每次循环, iter_var 迭代变量被设置为可迭代对象(序列, 迭代器, 或者是其他支持迭代的对 象)的当前元素, 提供给 suite_to_repeat 语句块使用.
示例:
msg="hello egon 666"
for i in (msg):
print(i)
name_list=['alex','eric','rain','xxx']
#通过序列项迭代
for i in name_list:
print(i)
#通过序列索引迭代
for i in range(len(name_list)):
print('index is %s,name is %s' %(i,name_list[i]))
#基于enumerate的项和索引
for i,name in enumerate(name_list,2):
print('index is %s,name is %s' %(i,name))
for如何遍历可迭代对象或迭代器:
迭代对象就是一个具有next()方法的对象,obj.next()每执行一次,返回一行内容。所有内容迭代完后,迭代器引发一个StopIteration异常告诉程序循环结束。 for语句在内部调用next()并捕获异常。for循环遍历迭代器或可迭代对象与遍历序列的方法并无二致,只是在内部做了调用迭代器next(),并捕获异常,终止循环的操作。
>>> f=open('a.txt','r')
for i in f:
print(i.strip())
hello
everyone
sb
如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列。
range()语法:
range(start,end,step=1):顾头不顾尾,前闭后开区间
- range(10):默认step=1,start=0,生成可迭代对象,包含[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- range(1,10):指定start=1,end=10,默认step=1,生成可迭代对象,包含[1, 2, 3, 4, 5, 6, 7, 8, 9]
- range(1,10,2):指定start=1,end=10,step=2,生成可迭代对象,包含[1, 3, 5, 7, 9]
例如:
>>>for i in range(5):
... print(i)
...
0
1
2
3
4
注:for基于range()实现计数循环,range()生成可迭代对象,说明for循环本质还是一种迭代循环
你也可以使用range指定区间的值:
>>>for i in range(5,9) :
print(i)
5
6
7
8
>>>
您可以结合range()和len()函数以遍历一个序列的索引,如下所示:
>>>a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
>>> for i in range(len(a)):
... print(i, a[i])
...
0 Google
1 Baidu
2 Runoob
3 Taobao
4 QQ
>>>
continue:用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一-次的执行
break:用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前的整个循环
for i in range(10):
if i == 4:
# break
continue
print(i)
for i in range(10):
print(i)
else:
print('===>')
九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print("%d*%d=%d" % (j, i, i * j), end=' ')
print(' ')
albums = ('Poe', 'Gaudi', 'Freud', 'Poe2')
years = (1976, 1987, 1990, 2003)
#sorted:排序
for album in sorted(albums):
print(album)
#reversed:翻转
for album in reversed(albums):
print(album)
#enumerate:返回项和
for i in enumerate(albums):
print(i)
#zip:组合
for i in zip(albums,years):
print(i)
- for循环为迭代循环
- 可遍历序列成员(字符串,列表,元组)
- 可遍历任何可迭代对象(字典,文件等)
- 可以用在列表解析和生成器表达式中
- break,continue,else在for中用法与while中一致
i = 5
while i > 0:
print(i)
i -= 1
与:and
或:or ,具有短路效用
非:not