• 运维特工,战胜心魔!!
  • 有些事情其实没有那么难,只是我们感觉难,走出第一步!
  • 你所浪费的今天,是昨天死去的人奢望的明天!!!
  • 欢迎访问 unixfbi.com 运维特工社区http://unixfbi.com/
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧
  • 运维特工:http://www.unixfbi.com
  • 人生没有白走的路,每一步都算数!!
  • 空杯心态,沉淀自己!

Python-while和for循环

Python unixfbi 12个月前 (09-12) 2422次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

一、while 循环

1.while 循环介绍

  • 可以用于编写通用迭代结构
  • 顶端测试为真就会执行循环体,并且会重复多次测试直到为假后执行循环后的其他语句。

2.while 循环语法格式

最简单的格式:

while boolean_expression:
  while_suite
else:
  else_suite
  • 只要boolean_expression的结果为 True,循环就会执行;如果为 False 时就会终止循环,此时如果有 else 分支,则会执行 else 内容;
  • else 分支为可选部分;
    while 可以和 if 结合:
while boolean_expression1:
  while_suite
  if boolean_expression2: break
  if boolean_expression3: continue
else:
  else_suite

3.while 举例

计算 1 到 100 的总和:

#!/usr/bin/env python3
sum = 0
n = 1
while n <= 100:
  sum = sum + n
  n = n + 1
print("1 到 %d 之和为: %d" % (n-1,sum))

out:

1 到 100 之和为: 5050

二、for 循环

1.for 循环介绍

  • 是一个通用的序列迭代器,用于遍历任何有序的序列对象内的元素;
  • 可用于字符串、元组、列表和其他的内置可迭代对象,以及通过类所创建的新对象;
  • for 循环比 while 循环执行速度快;

2.for 循环语法格式

for expression in iterable:
  for_suite
else:
  else_suite
  • 通常,expression 或是一个单独的变量,或是一个变量序列,一般以元组的形式给出;
  • 如果以元组或列表用于 expression,则其中的每个数据项都会拆分到表达式的项,例如
T=[(1,2),(3,4),(5,6),(7,8)]
for (a,b) in T:
print a,b

for 循环也可以和 if 结合:

for expression in iterable:
  for_suite
  if boolean_expression2: break
  if boolean_expression3: continue
else:
  else_suite

3.for 循环举例

利用 for 循环计算 1 到 100 的总和

#!/usr/bin/env python3
sum = 0
for i in range(101):
  sum = sum + i

print("1 到 %d 之和为: %d" % (i,sum))

out:

1 到 100 之和为: 5050

三、break、continue 和 else

1.break 和 continue 介绍

break:
break 语句可以跳出 for 和 while 的循环体。如果从 for 或者 while 循环中终止,任何对应的循环 else 块将不会执行。
如果使用嵌套循环,break 语句将停止执行最深层的循环,并开始执行下一行代码。
continue:
continue 语句是跳出本次循环,而 break 是跳出整个循环;
continue 语句被用来告诉 python 跳过当前循环块中剩余的语句,然后继续进行下一轮循环。
else 代码块:
只要循环是正常终止,else 分支就会执行;
如果循环终止是由于 break 跳出导致的、或由于发生异常导致跳出循环,则 else 分支不会执行;

2.举例

break 举例:

#!/usr/bin/env python3

for n in range(10):
    if n == 5:
       print("使用 break 终止循环!")
       break
    print("循环数字为 %d" %n)
else:
    print("for 循环没有被 break 终止!")

print("不管 for 循环是否正常终止都会执行该语句!")

out:

循环数字为 0
循环数字为 1
循环数字为 2
循环数字为 3
循环数字为 4
使用 break 终止循环!
不管 for 循环是否正常终止都会执行该语句!

如果if == 10:
out:

循环数字为 0
循环数字为 1
循环数字为 2
循环数字为 3
循环数字为 4
循环数字为 5
循环数字为 6
循环数字为 7
循环数字为 8
循环数字为 9
for 循环没有被 break 终止!
不管 for 循环是否正常终止都会执行该语句!

continue 举例:

#!/usr/bin/env python3

for n in range(10):
    if n == 5:
       print("使用 continue 跳过本次循环!")
       continue
    print("循环数字为 %d" %n)
else:
    print("for 循环没有被异常终止!")

print("不管 for 循环是否正常终止都会执行该语句!")

out:

循环数字为 0
循环数字为 1
循环数字为 2
循环数字为 3
循环数字为 4
使用 continue 跳过本次循环,继续下次循环!
循环数字为 6
循环数字为 7
循环数字为 8
循环数字为 9
for 循环没有被异常终止!
不管 for 循环是否正常终止都会执行该语句!

四、内置函数 range 和 zip

python 中提供了两个内置函数,用于在 for 循环中定制特殊的循环

1. range 或 xrange

如果你需要遍历数字序列,可以使用内置 range()函数。它会生成数列
- range:一次性地返回连续的整数列表
- xrange:一次产生一个数据元素,相较于 range 更节约空间

2.并行遍历 zip

zip 取得一个或多个序列为参数,将给定序列中的并排的元素配成元组,返回这些元组的列表。当参数长度不同时,zip 会以最短序列的长度为准。

zip 返回并行的元素元组的列表,常用于在 for 循环中遍历数个序列;
举例:

>>> L1 = [1,2,3,4,5]              
>>> L2 = ['a','b','c','d','e','f']    
>>> zip(L1,L2)                    
<zip object at 0x7f83e2f34f48>
>>> for n in zip(L1,L2):
...    print(n)
... 
(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')
(5, 'e')

zip 动态构造字典:

>>> keys = [1,2,3,4,5,6]              
>>> values = ['a','b','c','d','e','f']
>>> for (k,v) in zip(keys,values):    
...   D[k] = v
... 
>>> print(D)
{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f'}

3.举例

range 举例:

#!/usr/bin/env python3
for i in range(5):
    print(i)

out:

0
1
2
3
4

使用 range 指定步长:

#!/usr/bin/env python3
for i in range(0,10,3):
    print(i)

out:

0
3
6
9

五、练习

1.逐一显示列表中的所有元素

方法一:

#!/usr/bin/env python3
L1 = [1,2,3,4,5]
count = 0
while count < len(L1):
    print(L1[count])
    count += 1

方法二:

#!/usr/bin/env python3
L1 = [1,2,3,4,5]
while L1:
    print(L1[0])
    L1.pop(0)   # 或者使用 L1 = L1[1:]

逆序显示一个列表元素:
方法一:

>>> L1 = [1,2,3,4,5]
>>> L1.reverse()       
>>> L1
[5, 4, 3, 2, 1]

方法二:

#!/usr/bin/env python3
L1 = [1,2,3,4,5]
while L1:
    print(L1[-1])
    L1 = L1[:-1]

2.求 100 以内所有偶数之和

#!/usr/bin/env python3

sum = 0
for x in range(101):
   y = x % 2
   if y == 0:
     sum += x
print(sum)

3.创建一个包含了 100 以内所有奇数的列表

方法一:

#!/usr/bin/env python3
L1 = []
x = 1
while x < 100:
   L1.append(x)
   x += 2
print(L1)

方法二:

#!/usr/bin/env python3
L1 = []

for x in range(100):
    y = x % 2
    if y == 1:
       L1.append(x)
print(L1)

4.两个列表成长字典

方法一:

#!/usr/bin/env python3
L1 = [0,1,2,3,4,5,6]
L2 = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]
dict1 = {}
count = 0
if len(L1) == len(L2):
   while count < len(L1):
        dict1[L1[count]] = L2[count]
        count += 1
print(dict1)

out:

{0: 'Sun', 1: 'Mon', 2: 'Tue', 3: 'Wed', 4: 'Thu', 5: 'Fri', 6: 'Sat'}

方法二:
这种方法会把序列破坏了。

L1 = [0,1,2,3,4,5,6]
L2 = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]
dict1 = {}
while L1:
   dict2 = {L1[0]:L2[0]}
   dict1.update(dict2)
   L1.pop(0)
   L2.pop(0)
else:
   print(dict1)

方法三:
使用 zip

#!/usr/bin/env python3
L1 = [0,1,2,3,4,5,6]
L2 = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]
dict1 = {}
for (k,v) in zip(L1,L2):
    dict1[k] = v
print(dict1)

5.显示列表中索引为奇数的元素

方法一:

#!/usr/bin/env python3
L1 = [0,1,2,3,4,5,6,7]

for n in range(1,len(L1),2):
   print(L1[n])

方法二:

#!/usr/bin/env python3
L1 = [0,1,2,3,4,5,6,7]

for n in range(len(L1)):
    y = n % 2
    if y == 1:
       print(L1[n])

6.逐一分开显示字典中的所有元素

方法一:

#!/usr/bin/env python3

dict1 = {0: 'Sun', 1: 'Mon', 2: 'Tue', 3: 'Wed', 4: 'Thu', 5: 'Fri', 6: 'Sat'}
for n in dict1:
   print(n,dict1[n])

out:

0 Sun
1 Mon
2 Tue
3 Wed
4 Thu
5 Fri
6 Sat

方法二:
使用dict.items()方法

#!/usr/bin/env python3

dict1 = {0: 'Sun', 1: 'Mon', 2: 'Tue', 3: 'Wed', 4: 'Thu', 5: 'Fri', 6: 'Sat'}
for k,v in dict1.items():
   print(k,v)

UnixFBI 运维特工 , 版权所有丨如未注明 , 均为原创丨 转载请务必注明原文链接http://www.unixfbi.com/572.html
喜欢 (2)
[支付宝]
分享 (0)
unixfbi
关于作者:
运维工程师一枚,做有价值的事情!
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址