循环结构
循环主要是为了解决代码重复执行的问题,Python 中的循环语句有 for 和 while。
1 while循环
1.1 基础语法
Python 中 while 语句的一般形式:
while 条件语句:
循环体
说明:
while - 关键字
条件语句 - 任何有结果的表达式;数据、已经声明过的变量、运算符表达式(不能是赋值语句)等
: - 固定写法
循环体 - 和while保持一个缩进的一条或者多条语句;就是需要重复执行的代码段
执行流程图如下:
执行过程说明:
先判断 '条件语句' 的结果是否为 True, 如果为 True 就执行循环体;
执行完循环体再判断 '条件语句' 的结果是否为 True, 如果为 True 再执行循环体;
以此类推,直到 '条件语句' 的结果为 False 循环就结束
以下是while循环的使用示例:
# 使用while循环计算 1+2+3+4+5 的结果
num = 1 # 声明变量保存最后的结果
sum1 = 0
while num <= 5:
sum1 += num # 每次循环让 sum1 的值增加 num
num += 1 # 每次循环让 num 的值加 1
print(sum1)
'''
代码执行过程:
num = 1
sum1 = 0
第一次循环:num <= 5 -> 1 <= 5(成立) -> sum1 += num; num += 1; -> sum1 = 0+1=1; num = 1+1=2
第二次循环:num <= 5 -> 2 <= 5(成立) -> sum1 += num; num += 1; -> sum1 = 1+2=3; num = 2+1=3
第三次循环:num <= 5 -> 3 <= 5(成立) -> sum1 += num; num += 1; -> sum1 = 3+3=6; num = 3+1=4
第四次循环:num <= 5 -> 4 <= 5(成立) -> sum1 += num; num += 1; -> sum1 = 6+4=10; num = 4+1=5
第五次循环:num <= 5 -> 5 <= 5(成立) -> sum1 += num; num += 1; -> sum1 = 10+5=15; num = 5+1=6
第六次循环:num <= 5 -> 6 <= 5(不成立) -> 循环结束
'''
1.2 死循环
我们可以通过设置条件表达式永远不为 false 来实现无限循环,实例如下:
var = 1
while var == 1 : # 表达式永远为 true
num = int(input("输入一个数字 :"))
print ("你输入的数字是: ", num)
print ("Good bye!")
你可以使用 CTRL+C 来退出当前的无限循环。
2.1.3 while 循环使用 else 语句
在 while … else 在条件语句为 False 时执行 else 的语句块。
语法格式如下:
while 条件语句:
循环体
else:
代码块
循环输出数字,并判断大小:
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
执行结果:
0 小于 5
1 小于 5
2 小于 5
3 小于 5
4 小于 5
5 大于或等于 5
2 for循环
2.1 for循环语法
for 循环的语法如下:
for 变量 in 序列:
循环体
说明:
for - 关键字;固定写法
in - 关键字;固定写法
变量 - 程序员自己命名;可以是已经赋值过的变量,也可以是没有赋值过的变量
序列 - 可以是:字符串、列表、字典、集合、元组、迭代器、生成器
执行流程图如下:
执行过程说明:
让变量去序列中取值,一个一个的取,取完为止;每取一个值,执行一次循环体
(for循环可以通过控制序列中元素的个数来控制循环的次数)
以下是for循环的使用示例:
# 使用for循环将列表中的元素一个一个取出并且打印
languages = ['Python', 'C', 'C++', 'Java']
for item in languages:
print(item)
# 代码执行过程:
'''
languages = ['Python', 'C', 'C++', 'Java']
第一次循环: item = 'Python' -> print(item) -> 打印'Python'
第二次循环:item = 'C' -> print(item) -> 打印'C'
第三次循环:item = 'C++' -> print(item) -> 打印'C++'
第四次循环:item = 'Java' -> print(item) -> 打印'Java'
'''
2.2 range函数
如果你需要遍历数字序列或想要更好的控制for循环的次数,可以使用内置range()函数:
range函数的三种用法:
range(N) - 产生 0 ~ N-1 的数字序列
range(M, N) - 产生 M ~ N-1 的数字序列
range(M, N, step) - 从M开始每次增加step,直到N前一个数字为止
实例如下:
# 用法一:
for x in range(4):
print(x, end=' ')
结果:0 1 2 3
# 用法二:
for x in range(5, 9):
print(x, end=' ')
结果:5 6 7 8
# 用法三:
for x in range(2, 10, 2):
print(x, end = ' ')
结果:2 4 6 8
2.3 for循环使用else语句
在 for … else 在变量取不到序列中的元素时执行 else 的语句块。
语法格式如下:
for 变量 in 序列:
循环体
else:
代码块
遍历字符串中的字符,结束后打印 ‘完成!’:
str1 = 'LOVE'
for ch in str1:
print(ch)
else:
print('完成!')
执行结果:
L
O
V
E
完成!
3 break 和 continue 语句
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
while 中使用 break实例:
n = 5
while n > 0:
n -= 1
if n == 2:
break
print(n)
print('循环结束。')
输出结果:
4
3
循环结束。
while 中使用 continue:
n = 5
while n > 0:
n -= 1
if n == 2:
continue
print(n)
print('循环结束。')
执行结果:
4
3
1
0
循环结束。
for 中使用break和continue实例:
# break实例:
for letter in 'Love You':
if letter == 'o':
break
print ('当前字母为 :', letter)
print('======================')
# continue实例:
for letter in 'Love You':
if letter == 'o':
continue
print ('当前字母为 :', letter)
执行结果:
当前字母为 : L
======================
当前字母为 : L
当前字母为 : v
当前字母为 : e
当前字母为 :
当前字母为 : Y
当前字母为 : u