Python3的循环语句包括for和while,循环语句的流程图如下:
1、while循环
while循环语句和if条件语句一样,需要注意冒号(:)和缩进,Python3中没有do...while语句
a、形式
while 判断条件(condition): 执行语句(statements)……
b、流程图
c、无限循环
如果while循环语句的条件表达式结果一直为True,则进入无限循环模式,无限循环模式常见于服务器上客户端的实时请求。使用Ctrl+C退出当前的无限循环模式
d、while...else语句
while...else中,当while的条件语句为False时,执行else的语句块
while...else语句格式:
while <expr>: <statement(s)> else: <additional_statement(s)>
"""
随便输入一个整数N,判断是否为正数,while循环实现0 - N的和
"""
# 方法一:使用while语句
Num = int(input("请输入一个数:"))
number = 0
Sum = 0
if isinstance(Num , int ) and ( Num >= 0):
while(number <= Num):
Sum = Sum + number
number +=1
# 通过代码块的缩进跳出while循环
print("0到%d的和为:" % Num , Sum)
else:
print("请输入一个正整数")
# 方法二:使用while...else语句
Num = int(input("请输入一个数:"))
number = 0
Sum = 0
if isinstance(Num , int ) and ( Num >= 0):
while(number <= Num):
Sum = Sum + number
number +=1
# 通过else语句跳出while循环
else:
print("0到%d的和为:" % Num , Sum)
else:
print("请输入一个正整数")
2、for循环
python中for循环多用于遍历序列,如字符串、列表、元组、集合和字典等,其格式一般为:
for <variable> in <sequence>:
<statements>
else:
<statements>
流程图:
例子:
"""
输入一个列表,判断列表是否为空,遍历列表,直到发现列表中包含元素a,打印出元素a前的所有元素
"""
# 方法一:通过range(len(seq))遍历序列的索引
listA = ['KG' , 'KD' , 'Curry' , 'Kobe' ,'LBJ' ]
#listA = list()
if len(listA) >= 1:
for i in range(len(listA)):
if listA [i] is 'Kobe':
print("%s 是我最喜欢的球星" % listA[i])
break
else:
print("listA中存在的数据为:" , listA[i])
else:
print("listA是一个空列表")
# 方法二:遍历列表中元素
listA = ['KG' , 'KD' , 'Curry' , 'Kobe' ,'LBJ' ]
if len(listA) >= 1:
for lista in listA:
if lista == 'Kobe':
print("%s 是我最喜欢的球星" % lista)
break
else:
print("listA中存在的数据为:" , lista)
else:
print("listA是一个空列表")
listA中存在的数据为: KG
listA中存在的数据为: KD
listA中存在的数据为: Curry
Kobe 是我最喜欢的球星
3、range()函数
range()使用场景如下:
a、遍历数字序列
b、指定序列的起始区间及步长
c、遍历序列索引
d、创建整型列表
"""
range()函数使用场景
a、遍历数字序列
b、指定序列的起始区间及步长
c、遍历序列索引
d、创建整型列表
"""
# a、遍历数字序列
for i in range(5):
print("遍历数字序列:" , i)
#b 、指定序列的起始区间及步长
for i in range(10 , 20 , 2):
print("指定序列的起始区间及步长:" , i)
# c、遍历序列索引
listA = ['KG' , 'KD' , 'Curry' , 'Kobe' ,'LBJ' ]
for i in range(len(listA)):
print("遍历序列索引:" , listA[i])
# d、创建整型列表
listA = list(range(10))
print("创建整型列表listA:" , listA)
遍历数字序列: 0
遍历数字序列: 1
遍历数字序列: 2
遍历数字序列: 3
遍历数字序列: 4
指定序列的起始区间及步长: 10
指定序列的起始区间及步长: 12
指定序列的起始区间及步长: 14
指定序列的起始区间及步长: 16
指定序列的起始区间及步长: 18
遍历序列索引: KG
遍历序列索引: KD
遍历序列索引: Curry
遍历序列索引: Kobe
遍历序列索引: LBJ
创建整型列表listA: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
4、break和continue语句及循环中的 else 子句
4.1、break:跳出当前循环体语句,执行循环体外代码
break可以跳出 for 和 while 循环体。如果从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
4.2、continue语句:跳过当前循环体中的剩余语句,然后继续进行下一轮循环体语句
注意:循环中如果使用continue关键字,在使用关键字之前,需要确认循环的计数器是否修改,否则可能出现死循环
# 循环中如果使用continue关键字,在使用关键字之前,需要确认循环的计数器是否修改,否则可能出现死循环
i = 0
while i <= 5:
if i > 3:
print("执行语句")
# 使用continue关键字之前,修改i的值,否则出现死循环
i +=1
continue
print(i)
i +=1
0
1
2
3
执行语句
执行语句
4.3、break和continue执行过程:
例:
# while循环使用break:
number = 5
while number > 0:
number -= 1
# 当number == 2时,跳出while循环,执行print('循环结束')语句
if number == 2:
break
print(number)
print('while循环使用break,循环结束')
#while循环使用continue:
number = 5
while number > 0:
number -= 1
# 当number == 2时,跳出while循环,执行print('循环结束')语句
if number == 2:
continue
print(number)
print('while循环使用continue,循环结束')
# for循环使用break
for letter in 'Runoob':
# 遇到o字符时跳出for循环体,结束循环
if letter == 'o':
break
print ('for循环使用break,当前字母为 :', letter)
# for循环使用continue
for i in range(10):
# 遇到偶数时跳过print(i)语句,继续执行下一个循环
if (i % 2 == 0):
continue
print("for循环使用continue" , i)
4
3
while循环使用break,循环结束
4
3
1
0
while循环使用continue,循环结束
for循环使用break,当前字母为 : R
for循环使用break,当前字母为 : u
for循环使用break,当前字母为 : n
for循环使用continue 1
for循环使用continue 3
for循环使用continue 5
for循环使用continue 7
for循环使用continue 9
4.4、for...else和while...else使用break
while 循环语句和 for 循环语句使用 else 的区别:
- 1、如果 else 语句和 while 循环语句一起使用,则当条件变为 False 时,执行 else 语句
- 2、如果 else 语句和 for 循环语句一起使用,else 语句块只在 for 循环正常终止时执行
for...else和while...else中的else 子句在穷尽列表(for循环)或条件变为 false (while循环)导致循环终止时被执行,但如果循环是被 break终止时不执行else中的else 子句
# for...else语句被break中断,else语句不被执行
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, '等于', x, '*', n//x)
#使用break跳出第二个for循环,else语句不被执行
break
else:
# 循环中没有找到元素
print(n, ' 是质数')
2 是质数
3 是质数
4 等于 2 * 2
5 是质数
6 等于 2 * 3
7 是质数
8 等于 2 * 4
9 等于 3 * 3
# for...else语句在第二个for循环穷尽时,执行else语句
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, '等于', x, '*', n//x)
#break
else:
# 循环中没有找到元素
print(n, ' 是质数')
2 是质数
3 是质数
4 等于 2 * 2
4 是质数
5 是质数
6 等于 2 * 3
6 等于 3 * 2
6 是质数
7 是质数
8 等于 2 * 4
8 等于 4 * 2
8 是质数
9 等于 3 * 3
9 是质数
4.5、pass语句
一般pass语句是空语句,不做任何操作,仅作占位使用,为了保持程序结构的完整性
# pass语句仅作占位使用,无实际意义
for letter in 'Runoob':
if letter == 'o':
pass
print ('执行 pass 块')
print ('当前字母 :', letter)
print ("Good bye")
当前字母 : R
当前字母 : u
当前字母 : n
执行 pass 块
当前字母 : o
执行 pass 块
当前字母 : o
当前字母 : b
Good bye
4.6、内置 enumerate 函数遍历序列
使用内置 enumerate(列举、枚举的意思) 函数可遍历序列,打印出序列的索引和序列中元素的值,使用方法如下:
for index, item in enumerate(sequence): process(index, item)
例:
# 使用内置 enumerate(列举、枚举的意思) 函数可遍历序列,打印出序列的索引和序列中元素的值
listA = list(range(10 , 20 , 2))
for i , j in enumerate(listA):
print("listA中的索引为:" , i , '---' "索引对应的元素为:" , j )
listA中的索引为: 0 ---索引对应的元素为: 10
listA中的索引为: 1 ---索引对应的元素为: 12
listA中的索引为: 2 ---索引对应的元素为: 14
listA中的索引为: 3 ---索引对应的元素为: 16
listA中的索引为: 4 ---索引对应的元素为: 18