一、for循环语句
for循环语句格式如下:
for 变量 in 序列:
语句组1
else:
语句组2
先依次对序列中的每个值执行语句组1。然后,再执行语句组2。语句组1被执行的次数称为循环的次数。大多数情况下其实不需要else和语句组2。语句组要缩进。序列可以是range(...),也可以是字符串、列表、元组、字典、集合。例如:
for i in range(4):
print(i,end = " ")
程序输出:
0 1 2 3
range(n)是一个序列,包含整数0,1,2,……,n−1,相当于一个不包含n在内的左闭右开的区间[0,n)。上面的for语句,i依次取range(4)这个区间里面的每个值(0,1,2,3)并输出。
range(m,n,s)表示一个序列,m是起点,n是终点,s称为“步长”。序列第一个元素是m,第二个是m+s,第三个是m+2×s……。但是终点n不取。如果m大于n且s是负数,则为从大往小取。
for i in range(0, 10, 3): #步长为3,即每3个元素取1个
print(i,end = " ")
#>>0 3 6 9
for i in range(-10, -100, -30):
print(i,end = " ")
#>>-10 -40 -70
可以用for循环遍历列表和字符串,即依次访问列表中的每个元素,以及字符串中的每个字符:
a = [123, 'ok', 'pku', 'QQ']
for i in range(len(a)): #len(a)求列表a长度(元素个数)
print(i, a[i], end = ",")
#>>0 123,1 ok,2 pku,3 QQ,
print("") #输出换行
for i in a:
print(i,end = " ")
#>>123 ok pku QQ
print("")
for letter in 'Taobao':
print(letter, end="")
#>>Taobao
下面是一个带else的for循环的例子:
cities = ["Beijing","Chengdu","Wuhan","Tianjin"]
for city in cities:
print(city,end = ",")
else:
print("No break")
print("Done!")
程序输出:
Beijing,Chengdu,Wuhan,Tianjin,No break
Done!
可见,在遍历完序列cities中的每个取值以后,才会执行else分支里面的语句组。
可以用for循环连续输出26个小写字母:
for i in range(26):
print(chr(ord("a") + i),end="")
程序输出:
abcdefghijklmnopqrstuvwxyz
在Python中,每个字符都是长度为1的字符串,每个字符都有一个编码。字符的编码是整数。ord(x)用于求字符x的编码,chr(x)用于求编码为整数x的字符。字符"a"到"z"的编码是连续的,即"a"的编码加上1就是"b"的编码,再加1就得"c"的编码……
二、break 语句和 continue 语句
break语句可以用于从循环中跳出。例如:
cities = ["Beijing","Chengdu","Wuhan","Tianjin"]
for city in cities:
if city[0] == 'W':
break
print(city,end = ",")
else:
print("No break")
print("Done!")
程序输出:
Beijing,Chengdu,Done!
break导致循环语句立即结束,本次循环语句组中剩余的部分也不执行。因此,当city等于"Wuhan"时,不打印"Wuhan",for循环直接结束,连else部分都不会被执行。
continue语句可以立即结束本次循环,开始下一次循环:
for letter in 'Taobao':
if letter == 'o': #字母为o时跳过输出
continue #直接跳到下次循环
print(letter,end = "")
程序输出:
Taba
三、多重循环
循环可以嵌套,即循环的语句组里面还可以包含循环,形成多重循环,写法为:
for i in 序列1:
......
for j in 序列2:
语句组2
......
四、while 循环语句
while语句格式如下:
while 表达式 exp:
语句组1
else:
语句组2
while循环执行步骤如下。
第1步:判断exp是否为真,若为真,转第2步;若为假,转第3步。
第2步:执行语句组1,然后回到第1步。
第3步:执行语句组2。
第4步:while语句执行完毕,程序继续往下执行。
一般情况下都不需要写else,而写成如下形式:
while 表达式 exp:
语句组1
执行步骤如下。
第1步:判断exp是否为真,若为真,转第2步;若为假,转第3步。
第2步:执行语句组1,然后回到第1步。
第3步:while语句执行完毕,程序继续往下执行。
连续输出26个字母可以用while循环实现如下:
i = 0
while i < 26: #只要i<26就执行下面
print(chr(ord("a") + i),end="")"
i+=1
有时会用到下面这种while写法:
whileTrue:
……
if exp:
break
……
while True就意味着这个循环会不停执行。只有在exp为真,执行break的情况下才会终止循环。
continue语句同样适用于while循环。
下面的程序提示用户输入密码,密码不正确则提示不正确,然后再次要求输入密码。密码正确则提示成功,然后结束。密码是pku。
while (input("请输入密码:") != "pku"):
print("密码不正确!")
print("密码输入成功!")
程序运行结果可能如下:
请输入密码:bba↙
密码不正确!
请输入密码:std↙
密码不正确!
请输入密码:pku↙
密码输入成功!
1398

被折叠的 条评论
为什么被折叠?



