ljzsdut
GitHubToggle Dark/Light/Auto modeToggle Dark/Light/Auto modeToggle Dark/Light/Auto modeBack to homepage

13 流程控制

流程控制

三大流程控制语句:

(1) 顺序控制:程序从上到下逐行的执行,中间没有任何判断和跳转。

(2) 分支控制

(3) 循环控制

说明:控制语句可以使用相互嵌套。

顺序结构

顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的

分支结构

if条件语句

语法格式:

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()语法:

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
>>>

break&continue

continue:用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一-次的执行

break:用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前的整个循环

for i in range(10):
    if i == 4:
        # break
        continue
    print(i)

for-else

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中一致

while循环

i = 5
while i > 0:
    print(i)
    i -= 1

逻辑运算符

与:and

或:or ,具有短路效用

非:not