首页
学习
活动
专区
圈层
工具
发布
30 篇文章
1
【愚公系列】2021年12月 Python教学课程 01-全方位解读Python
2
【愚公系列】2021年12月 Python教学课程 02-变量
3
【愚公系列】2021年12月 Python教学课程 03-数据类型
4
【愚公系列】2021年12月 Python教学课程 04-字符串
5
【愚公系列】2021年12月 Python教学课程 05-列表List
6
【愚公系列】2021年12月 Python教学课程 06-元组Tuple
7
【愚公系列】2021年12月 Python教学课程 07-字典Dict
8
【愚公系列】2021年12月 Python教学课程 08-基本语法
9
【愚公系列】2021年12月 Python教学课程 09-流程控制-顺序执行
10
【愚公系列】2021年12月 Python教学课程 10-流程控制-条件判断
11
【愚公系列】2021年12月 Python教学课程 11-流程控制-循环控制
12
【愚公系列】2021年12月 Python教学课程 12-Python函数
13
【愚公系列】2021年12月 Python教学课程 13-变量作用域
14
【愚公系列】2021年12月 Python教学课程 14-递归函数
15
【愚公系列】2021年12月 Python教学课程 15-匿名函数
16
【愚公系列】2021年12月 Python教学课程 16-推导式
17
【愚公系列】2021年12月 Python教学课程 17-模块与包
18
【愚公系列】2021年12月 Python教学课程 18-异常处理
19
【愚公系列】2021年12月 Python教学课程 19-面向对象编程-面向对象定义
20
【愚公系列】2021年12月 Python教学课程 20-面向对象编程-类和对象
21
【愚公系列】2021年12月 Python教学课程 21-面向对象编程-特殊成员和魔法方法
22
【愚公系列】2021年12月 Python教学课程 22-面向对象编程-封装、继承、多态
23
【愚公系列】2021年12月 Python教学课程 23-面向对象编程-运算符重载
24
【愚公系列】2021年12月 Python教学课程 24-Python数据库编程
25
【愚公系列】2021年12月 Python教学课程 25-Python文件读写
26
【愚公系列】2021年12月 Python教学课程 26-系统编程
27
【愚公系列】2021年12月 Python教学课程 27-算法
28
【愚公系列】2021年12月 Python教学课程 28-Web开发基础
29
【愚公系列】2021年12月 Python教学课程 29-MVC设计模式
30
【愚公系列】2021年12月 Python教学课程 30-Django简介

【愚公系列】2021年12月 Python教学课程 11-流程控制-循环控制

文章目录

一、循环控制

很多时候,我们在处理业务的时候,并不是如果怎么样就怎么样,而是一直做某件事,直到全部做完,甚至永远做不完…

循环控制,就是让程序循环运行某一段代码直到满足退出的条件,才退出循环。

Python 用关键字 for 和 while 来进行循环控制,但是没有其它语言的 do…while 语句。

1.while 循环

语法格式:

代码语言:javascript
复制
while 判断表达式:
    内部代码块

while 循环用伪代码描述就是“当条件满足的时候,就一直运行 while 所管理的代码块,当 条件不满足的时候,就结束 while 循环。” 看个例子:

代码语言:javascript
复制
n = 100
sum = 0
counter = 1
while counter <= n:
    sum = sum + counter
    counter += 1
print("1 到 %d 之和为: %d" % (n,sum))

通常,我们要在循环条件,或循环体内设置退出条件,防止死循环,但有时候也需要无限循环。例如 Web 服务器响应客户端的实时请求。而下面则是一个没有退出机制的死循环,程序永远不会打印 Good bye。

代码语言:javascript
复制
while True: # 表达式永远为 true
    s = input("输入点什么吧: ")
    print ("你输入的是: ", s)
print ("Good bye!")

while 的 else 从句: while 循环还可以增加一个 else 从句。当 while 循环正常执行完毕,会执行 else 语句。但如果是被 break 等机制强制提前终止的循环,不会执行 else 语句。注意 else 与 while 平级的缩进方式!

代码语言:javascript
复制
number = 10
i = 0
while i < number:
    print(i)
    i += 1
else:
    print("执行完毕!")

下面是被打断的 while 循环,else 不会执行:

代码语言:javascript
复制
number = 10
i = 0
while i < number:
    print(i)
    i += 1
    if i == 7:
    break 
else:
    print("执行完毕!")

2.for 循环

虽然与 while 一样都是循环的关键字,但 for 循环通常用来遍历可迭代的对象,如一个列表或者一个字典。其一般格式如下:

代码语言:javascript
复制
for <variable> in <sequence>:
    <statements>

for … in …: 属于固定套路。其实我们在前面的章节已经或多或少的介绍过 for 的用法,尤其是遍历一些数据类型的时候。

每次 for 循环运行的时候,在位置的变量将设置为中的下一项, 将运行,然后 python 将回到的开始位置。除非 中没有项了,否则中的下一项将保存到中。等到中 没有项的时候,python 将跳过并继续执行后续代码。

如果想让代码运行一定的次数,需要使用 range()函数。内建函数 range()接受一个 整数作为输入并返回一个数字列表,其中的项为从 0 开始,直到比给定的整数小 1 的整数。如果不想从 0 开始,就给 range()两个数字,开始数字和结束数字。还可以让 range()按照一定数值递增,这个数值叫做步长。

一个例子:

代码语言:javascript
复制
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    sum = sum + x
print(sum)

for 循环的 else 子句: 与 while 一样,for 循环也可以有 else 子句。同样是正常结束循环时,else 子句执行。被 中途 break 时,则不执行。

3.循环的嵌套

if 判断可以嵌套,while 和 for 当然也可以嵌套。但是建议大家不要嵌套 3 层以上,那样的效率会很低。下面是一个嵌套 for 循环结合 else 子句的例子:

代码语言:javascript
复制
# 这是一个判断质数的程序
for n in range(2, 100):
    for x in range(2, n):
        if n % x == 0:
        print(n, '等于', x, '*', n//x)
        break
    else:
        # 循环中没有找到元素
        print(n, ' 是质数')

4.break 语句

通常情况下的循环要么执行出错,要么死循环,要么就只能老老实实等它把所有的元素循环一遍才能退出。如果想在循环过程中退出循环,怎么办?用 break 语句!

break 只能用于循环体内。其效果是直接结束并退出当前循环,剩下的未循环的工作全部被忽略和取消。注意当前两个字,Python 的 break 只能退出一层循环,对于多层嵌套循环,不能全部退出。

代码语言:javascript
复制
for letter in 'Hello world': # 第一个实例
    if letter == 'o':
        break
    print ('当前字母为 :', letter)
-------------------------------------------- 
var = 10 # 第二个实例
while var > 0: 
    print ('当期变量值为 :', var)
    var -= 1
    if var == 5:
        break

5.continue 语句

与 break 不同,continue 语句用于跳过当前循环的剩余部分代码,直接开始下一轮循环。它不会退出和终止循环,只是提前结束当前轮次的循环。同样的,continue 语句只能用在循环内。

代码语言:javascript
复制
for letter in 'Hello world': # 第一个实例
    if letter == 'o': # 字母为 o 时跳过输出
        continue
    print ('当前字母 :', letter)
-------------------------------------------------------
var = 10 # 第二个实例
while var > 0: 
    var -= 1
    if var == 5: # 变量为 5 时跳过输出
        continue
    print ('当前变量值 :', var)

Python 没有 goto 语法 前面说了,在嵌套循环中,break 只能跳出当前层的循环,无法全部跳出。在 C 语言中有goto 语法,可以实现这一功能,但是 Python 没有 goto。那有需求的时候怎么办呢?设置flag!

代码语言:javascript
复制
flag = False # 用于控制外层循环的标志
for i in range(10):
    if flag: # 当 flag 被内层循环设置为 True 的时候,跳出外层循环
        break
    for j in range(10):
        if j==7:
            flag = True
            break
    print(i,j)
下一篇
举报
领券