Python——循环

一. while 循环

在 Python 中,while 循环用于循环执行程序,只要判断条件为 True,就会一直不停地循环执行。

while语句的一般形式:

while 判断条件:
       语句

【注】在 Python 中没有  do..while  循环。

流程图:

                                                        While Loop

#!/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 Loop

>>>
>>> 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

流程图:

                                       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

流程图:

                                                          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

猜你喜欢

转载自blog.csdn.net/qq_41573234/article/details/81570228