1、遍历循环
遍历某个结构形成的循环运行方式
for <循环变量> in <遍历结构>:
<语句块>
-由保留字for和in组成,完整遍历所有元素后结束
-每次循环,所获得元素放入循环变量,并执行一次语句块
2、遍历循环的应用
(1)
#计数循环(N)次
for i in range(N): #可以不使用i
<语句块>
for i in range(M,N,K):
<语句块>
-遍历由range()函数产生的数字序列,产生循环
# range对象,保存的不是所有的数据,而是生成数据的算法
# 指定终止值
# r = range(10)
# 指定起始、终止值,左闭右开
# r = range(2, 10)
# 指定起始、终止、步进
r = range(2, 10, 2)
# print(r, type(r))
# 可以遍历
for i in r:
print(i)
# 可以转换为列表
print(list(r))
运行结果:
2
4
6
8
[2, 4, 6, 8]
(2)字符串遍历循环
for c in s:
<语句块>
-s是字符串,遍历字符串每个字符,产生循环
>>> for c in "Python123":
print(c,end=",")
P,y,t,h,o,n,1,2,3,
(3)列表遍历循环
for item in ls:
<语句块>
-ls是一个列表,遍历其每个元素,产生循环
>>> for item in [123,"PY",456]:
print(item,end=",")
123,PY,456,
注 列表、集合、字典生成式:
print([i for i in range(1, 11)])
print([i*2 for i in range(1, 11)])
print([i*i for i in range(1, 11)])
print([str(i) for i in range(1, 11)])
print([i for i in range(1, 11) if i % 2 == 0])
print(['hello' for i in range(1, 11)])
# 也可以生成集合
print({i for i in range(1, 11)})
# 还可以生成字典
print({i: i for i in range(1, 11)})
运行结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
[2, 4, 6, 8, 10]
['hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello']
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
{1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10}
(4)文件遍历循环
for line in fi:
<语句块>
-fi是一个文件标识符,遍历其每行,产生循环
(5)无限循环
由条件控制的循环运行方式
while <条件>:
<语句块>
-反复执行语句块,直到条件不满足时结束 (ctrl + C退出执行)
>>> a=3
>>> while a >0:
a= a-1
print(a)
2
1
0
练习:
# 遍历字符串
for i in 'hello':
print(i,end=',')
print()
# 遍历列表
lt = [1, 2, 3]
for i in lt:
# 可以手动获取下标
print(i, lt.index(i))
# 遍历列表,可以直接使用下标
for index, value in enumerate(lt):
print(index, value)
# 遍历字典
d = {'a': 'apple', 'b': 'banana', 'c': 'car', 'd': 'dog'}
for key in d:
# 遍历的是键,值需要单独获取
print(key, d[key])
# for key, value in d.items():
# 与上面的方式是等价的
for key, value in dict.items(d):
print(key, value)
运行结果:
h,e,l,l,o,
1 0
2 1
3 2
0 1
1 2
2 3
a apple
b banana
c car
d dog
a apple
b banana
c car
d dog
3、循环控制保留字
break 和continue
-break跳出并结束当前整个循环,执行循环后的语句
-continue结束当次循环,继续执行后续次数循环
-break和continue可以与for和while循环搭配使用
>>> for c in "PYTHON": >>> for c in "PYTHON":
if c == "T": if c == "T":
continue break
print(c,end="") print(c,end="")
PYHON PY
>>> s="PYTHON" >>> s="PYTHON"
>>> while s !="": >>> while s !="":
for c in s: for c in s:
print(c,end="") if c == "T":
s = s[:-1] break
PYTHONPYTHOPYTHPYTPYP print(c,end="")
s = s[:-1]
PYPYPYPYPYP
4、循环的拓展
for <循环变量> in <遍历结构>: while <条件> :
<语句块1> <语句块1>
else: else
<语句块2> <语句块2>
循环与else
-当循环没有被break语句退出时,执行else语句块
-else语句块作为“正常”完成循环的奖励
-这里else的用法与异常处理中else用法相似
>>>for c in "PYTHON" : >>>for c in "PYTHON" :
if c =="T" : if c == "T" :
continue break
print(c,end="") print(c,end="")
else : else :
print("正常退出") print("正常退出")
PYHON正常退出 PY
练习:
from random import randint
from time import sleep
print('人在江湖飘,哪能不挨刀...')
print('人在江湖飘,哪能不挨刀...')
while True:
# 用于占位的空语句
# pass
jiege = randint(1, 5)
feihu = randint(1, 5)
# 做差
cha = jiege - feihu
# abs:求绝对值
if abs(cha) == 1 or abs(cha) == 4:
if cha == 1 or cha == -4:
print('杰哥:{},飞虎:{},杰哥胜出,飞虎喝酒'.format(jiege, feihu))
else:
print('杰哥:{},飞虎:{},飞虎胜出,杰哥喝酒'.format(jiege, feihu))
break
else:
print('不分伯仲,继续...')
# 睡眠1秒
sleep(1)
小结: