一. while 循环
在 Python 中,while 循环用于循环执行程序,只要判断条件为 True,就会一直不停地循环执行。
while语句的一般形式:
while 判断条件:
语句
【注】在 Python 中没有 do..while 循环。
流程图:
#!/usr/bin/env python3
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 到 %d 之和为: %d" % (n,sum))
执行结果:
1 到 100 之和为: 5050
while 循环使用 else 语句
在 while … else 在条件语句为 false 时执行 else 的语句块:
count = 0
while count < 5:
print(count," 小于 5")
count += 1
else:
print(count," 大于或等于 5")
执行结果:
0 小于 5
1 小于 5
2 小于 5
3 小于 5
4 小于 5
5 大于或等于 5
二. for 循环
如果说 for 循环是顺序播放,那 while 循环可以视为单曲循环。
for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
语法格式:
for <val> in <序列>:
<循环体>
val 是一个变量,在每次迭代中,用于接收将序列中元素的值。
循环会一直继续,直到到达序列的最后一项。循环体与其余的代码使用缩进分隔。
流程图:
>>>
>>> for letter in "zth":
... print(letter)
...
z
t
h
>>>
>>> li = ["hello",",","zth"]
>>>
>>> for letter in li:
... print(letter)
...
hello
,
zth
for 循环中使用 else 语句
如果循环正常执行完(即:不是通过 break 跳出而中断的),则执行 else 部分。
注意: break 语句可以用来跳出 for 循环,在这种情况下,else 部分会被忽略。
songs = ['纵','有','红','颜']
for letter in songs:
print(letter)
else:
print('百生千劫')
执行结果:
纵
有
红
颜
百生千劫
三. 循环遍历字典元素
>>> dict0 = {'name':'zth','age':20}
>>>
>>>
>>> for tup in dict0:
... print(tup,dict0[tup])
...
name zth
age 20
>>>
>>>
>>> for key,value in dict0.items():
... print(key,value)
...
name zth
age 20
字典中的元素是没有顺序的。也就是说,迭代时字典中的键和值都能保证被处理,但是处理顺序不确定。
四. 迭代工具
1. 并行迭代
程序可以同时迭代两个序列。
>>> li1 = ['name','age']
>>> li2 = ['zth','20']
>>>
>>> for i in range(len(li1)):
... print(li1[i],': ',li2[i])
...
name : zth
age : 20
range()函数
如果你需要遍历数字序列,可以使用内置range()函数,它会生成数列。
- 可以使用 range 指定区间的值
- 也可以使 range 以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长'):
- 您可以结合range()和len()函数以遍历一个序列的索引
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
>>>
>>> for i in range(5,9): # 指定区间
... print(i)
...
5
6
7
8
>>>
>>> for i in range(0,10,3): # 设置步长
... print(i)
...
0
3
6
9
zip() 函数
zip 函数用来进行并行迭代,可以把两个序列合并在一起,返回一个元组的列表。
zip 函数可以作用于任意数量的序列,并且可以应对不等长的序列。当短序列遍历结束时,for 循环就会遍历结束。
>>> li1 = ['name','age']
>>> li2 = ['zth','20']
>>>
>>>
>>> for i,j in zip(li1,li2):
... print(i,': ',j)
...
name : zth
age : 20
>>>
>>>
>>> for i,j in zip(range(3),range(100)): # 不等长序列
... print(i,'<-> ',j)
...
0 <-> 0
1 <-> 1
2 <-> 2
2. 翻转和排序迭代
reversed 和 sorted 函数可作用于任何序列或可迭代对象,但不是原地修改对象,而是返回翻转或排序后的版本。
sorted 函数返回一个列表,reversed 函数返回一个可迭代对象。
>>> sorted([5,3,1,8])
[1, 3, 5, 8]
>>> sorted("Hello,World")
[',', 'H', 'W', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r']
>>>
>>>
>>> list(reversed("Hello,World"))
['d', 'l', 'r', 'o', 'W', ',', 'o', 'l', 'l', 'e', 'H']
>>> ''.join(reversed("Hello,World"))
'dlroW,olleH'
五. 跳出循环
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
1. break 语句
break 用于终止循环语句。即使循环条件不是 False 或者序列还没被完全递归完,也会终止。
break 语句用在 while 和 for 循环中。
如果使用嵌套循环,break 语句就会停止执行最深层的循环,并开始执行下一行代码。
语法格式:
break
流程图:
>>> for letter in "Hello":
... if letter == 'l':
... break
... print(letter)
...
H
e
>>>
>>>
>>> num = 10
>>> while num>0:
... print(num)
... num -=1
... if num ==8:
... break
...
10
9
2. continue 语句
continue 用于跳过当前循环的剩余语句,然后继续进行下一轮循环。
continue 语句用于 while 和 for 循环中。
语法格式:
continue
流程图:
>>> for letter in "Hello":
... if letter == 'l':
... continue
... print(letter)
...
H
e
o
>>>
>>>
>>> num = 3
>>> while num > 0:
... num -= 1
... if num == 2:
... continue
... print(num)
...
1
0
六. pass 语句
Python pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句
语法格式:
pass
>>> for letter in "Hello":
... if letter == 'l':
... pass
... print('执行 pass 块')
... print(letter)
...
H
e
执行 pass 块
l
执行 pass 块
l
o