2.2. for循环语句

2.2.1. 1.说明

for语句是python中的循环控制语句,可用来遍历某一对象,还具有一个附带的可选的else块,主要用于处理for语句中包含的break语句。

continue    跳出本次循环继续下一条
break       跳出整个循环,直接执行else的内容,有多级循环的话跳到外层循环
break 2     跳出2层循环

建议

不建议循环超过三层,层次太多,逻辑思路会凌乱

eg

#!/usr/bin/env python
#-*- coding:utf8 -*-
print("今有一个数,在100以内,三三数之剩余2,五五数之剩余4,七七数之剩余3,请问这个数是什么?")
for num in range(100):
    if num %3==2 and num %5 ==4 and num%7 ==3:
        print("这个数是:"+ str(num))

2.2.2. 2.代码示例

#!/usr/bin/env python
#-*- coding:utf8 -*-
print('-----for 循环字符串-----------')
for letter in 'good':
    #for 循环字符串
    print ('当前字母 :', letter)




print('-----for 循环数字序列-----------')
number=[1,2,3]
for num in number:
    #for 循环数字序列
    print('当前数字:',num)




print('-----for 循环字典-----------')
#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/5/10 15:29
# filename: for_dict.py
my_dict = {"语文": 89, "数学": 99, "英文": 80}

print("------------------------------------------------------------")
print("通过items()方法遍历所有的key-value对")
# 通过items()方法遍历所有的key-value对
for key, value in my_dict.items():
    print("key:{}".format(key), "------------>", "value:{}".format(value))


print("------------------------------------------------------------")
print("通过keys()来遍历所有的key")
#通过keys()来遍历所有的key
for key in my_dict.keys():
    print("key:{}".format(key), "------------>", "value:{}".format(my_dict[key]))


print("------------------------------------------------------------")
print("通过values()来遍历所有的key")
#通过keys()来遍历所有的key
for value in my_dict.values():
    print("value:{}".format(value))


print("------------------------------------------------------------")
print("for....else....语法格式")
for key in my_dict:
    print("key:{}".format(key))
else:
    print("for循环结束.....")

eg

money = [['书籍', 250, 480, 365],
     ['音乐CD', 450, 380, 600],
     ['POLO上衣', 680, 390, 480]]

for(product, price1, price2, price3) in money:
    print('%6s'%product,' 三次购买物品的总价:',
              (price1 + price2 + price3))

输出信息

    书籍  三次购买物品的总价: 1095
  音乐CD  三次购买物品的总价: 1430
POLO上衣  三次购买物品的总价: 1550

2.1 计算阶乘

#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/5/10 15:22
# filename: test02.py
s_max = input("请输入您想计算的阶乘:")
mx = int(s_max)
result = 1

# 还有for-in循环遍历范围
for num in range(1, mx + 1):
    result = result * num
print(result)

2.2.3. 3.range 函数

for item in range(1, 20, 2):
    print("Count is :{}".format(item))

print("-----------------------------------")
for item2 in range(0, -20, -3):
    print("Count is {}".format(item2))

代码示例

#!/usr/bin/env python
# -*- coding:utf8 -*-

"""

for 迭代对象 in 对象:
    循环体


#基本应用,进行数值循环

range(start, stop[, step]) -> range object
start:开始数值
stop:结束数值
step:步长

"""


for i in range(1, 11, 2):
    print(i, end=" ")

for i in range(1, 11):
    print(i, end=" ")
print()

for i in range(11):
    print(i, end=" ")


print("计算1+2+3+4....100的结果")
result = 0  #保存累加结果的变量

for i in list(range(101)):
    result = result + i

print(result)


print("今有物,不知其数,三三数之余2,五五数之余3,七七数之余2,问何物?")
for i in range(1001):
    if i % 3 == 2 and i % 5 == 3 and i % 7 == 2:
        print("答曰 这个数值是:{}".format(i))
# for循环依次迭代字符串
string1 = "不要再说我不能"
print(string1)
for ch in string1:
    print(ch)

2.2.4. 4.嵌套循环

电影院选座示例:

#!/usr/bin/env python
#-*- coding:utf8 -*-


for row in range(1,5):
    if row == 2:
        print("您坐在: {}排".format(row))
        for row1 in range(11):
            if row1 == 7 :
                print("您的座位是:第{}排,第{}列".format(row,row1))

2.2.5. 5.遍历列表以及索引

##不推荐
items = 'zero one two three'.split()
# method 1
i = 0
for item in items:
  print i, item
  i += 1
# method 2
for i in range(len(items)):
  print i, items[i]
##推荐
items = 'zero one two three'.split()
for i, item in enumerate(items):
  print i, item

2.2.6. 6.循环嵌套

##不推荐
for x in x_list:
  for y in y_list:
    for z in z_list:
      # do something for x & y

##推荐
from itertools import product
for x, y, z in product(x_list, y_list, z_list):
  # do something for x, y, z

2.2.7. 7.内置BIF函数

Python 语言内置了几种常用的迭代函数, 既方便又实用。

enumerate (seq )            # 编号迭代
sorted (seq)                 # 排序迭代
reversed (seq)               # 翻转迭代
zip(segl, seq2,......)      # 并行迭代

enumerate (seq )

#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2020/3/13 11:13
# filename: sample.py

# enumerate
for i, item in enumerate('abcd'):
    print("第%d个字符是:%s" % (i, item))

'''
第0个字符是:a
第1个字符是:b
第2个字符是:c
第3个字符是:d
'''

sorted (seq)

# sorted
for i in sorted([3, 1, 6, 0]):
    print(i)

'''
0
1
3
6
'''

reversed (seq)

# reversed
for i in reversed([3, 1, 6, 0]):
    print(i)
'''
0
6
1
3
'''

zip(segl, seq2,……)

# zip
lsta = (1, 2)
lstb = (3, 4)
lstc = (5, 6, 7)
for i, j, k in zip(lsta, lstb, lstc):
    print("%d:%d:%d" % (i, j, k))

'''
1:3:5
2:4:6
'''