6- for循环

发布时间 2024-01-13 16:43:20作者: ljh-

'''
for循环和while循环的作用是一样的
for循环一般常用于取值循环,循环的过程中,取出下列类型的每一个数据值
字符串、列表、集合、元组、字典

for循环语法:
for 变量名 in 字符串/列表/集合/元组/字典
循环的代码(变量名拿到的是数据类型中的一个数据)
'''

获取列表中那些数据是奇数

a = [11,12,23,34,45,56,67,78]
print(a[0]%2 != 0) # 判断列表中第一个数据是否是奇数--Rrue
print(a[1]%2 != 0) # 判断列表中第二个数据是否是奇数--False
print(a[2]%2 != 0) # 判断列表中第三个数据是否是奇数--True
print(a[3]%2 != 0) # 判断列表中第四个数据是否是奇数--False
print(a[4]%2 != 0) # 判断列表中第五个数据是否是奇数--True
print(a[5]%2 != 0) # 判断列表中第六个数据是否是奇数--False
print(a[6]%2 != 0) # 判断列表中第七个数据是否是奇数--True
print(a[7]%2 != 0) # 判断列表中第八个数据是否是奇数--False

问题:以上代码可以取出每个数多个判断,如果列表中的数据个数很多,那么这种写法就不灵活

解决:使用while循环来解决

i = 0

初始化计数器i为0

while i < len(a):
# 当i小于数组a的长度时,执行循环体
if a[i]%2 != 0:
# 如果数组a中索引i对应的元素不能被2整除为奇数
print(a[i])
# 打印数组a中索引i对应的元素
i += 1
# 计数器i加1

打印一行星号,做为上下区分

print('***************************')

解决:使用for循环来解决

for i in range(len(a)): # 遍历列表 a 的索引
if a[i] % 2 != 0: # 如果当前索引对应的元素不是偶数而是奇数
print(a[i]) # 打印该元素

打印一行星号,做为上下区分

print('***************************')

问题:默认for循环a的变量时,可以打印8次,需求只要5次

b = 0 # 初始化计数器b为0
for i in a: # 遍历列表a中的每一个元素,将元素赋值给变量i
if b == 5: # 计数器b等于5
break # 结束循环
print(i) # 打印变量i的值
b += 1 # 计数器b自增1

打印一行星号,做为上下区分

print('***************************')

问题:for循环字符串,每循环一次,打印字符串中一个字符

for i in 'Rocco':
print(i) # 循环遍历字符串 'Rocco' 中的每个字符,依次赋值给变量 i,并打印变量 i 的值

打印一行星号,做为上下区分

print('***************************')
aa = 'Rocco' # 定义一个字符串变量aa并赋值为'Rocco'
for i in aa: # 循环遍历aa中的每个字符,将当前字符赋值给变量i
print(i) # 打印变量i的值

打印一行星号,做为上下区分

print('***************************')

问题:for循环元组,每循环一次,取出元组中每一个数据

for i in ('Rocco', 11, 22, 33):
# 对于变量i依次取值为'Rocco', 11, 22, 33的情况,执行下面的代码块
print(i) # 打印变量i的值

打印一行星号,做为上下区分

print('***************************')
bb = ('Rocco', 11, 22, 33) # 定义一个包含字符串和整数的元组
for i in bb: # 遍历元组中的每个元素
print(i) # 打印当前元素

打印一行星号,做为上下区分

print('***************************')

问题:for循环集合,每循环一次,取出集合中每一个数据

使用for循环遍历一个包含字符串和数字的可迭代对象

for i in {'Rocco', 111, 222, 333, 333}:
# 调用print函数打印当前循环的元素
print(i)

打印一行星号,做为上下区分

print('***************************')
cc = {'Rocco', 111, 222, 333, 333}
for i in cc:
print(i)

打印一行星号,做为上下区分

print('***************************')

问题:for循环字典,每循环一次,取出字典中每一个键

遍历字典中的每一个键

i 代表字典中的键

for i in {'name': 'Rocco', 'age': 11, 'sex': 'male', 'height': 170}:
# 调用print函数打印当前循环的键
print(i)

打印一行星号,做为上下区分

print('***************************')
dd = {'name': 'Rocco', 'age': 11, 'sex': 'male', 'height': 170} # 定义一个字典dd,包含键值对'name': 'Rocco'、'age': 11、'sex': 'male'和'height': 170
for i in dd: # 遍历字典dd的键
print(i) # 打印每个键

获取字典的关系(键值对相当于结婚证上老公老婆),同时获取键和值

for key, value in dd.items():
# 遍历字典dd中的每个键值对,分别赋值给变量key和value
print(key, value)
# 打印key和value的值

一个键对应多个值的获取方式

ee = {'name': 'Rocco', 'age': 11,'sex':'male', 'height': 170, 'hobbies': ['swimming','reading', 'dancing']}
for key, value in ee.items():
# 遍历字典ee中的每个键值对,分别赋值给变量key和value
print(key, value)
# 打印key和value的值

打印一行星号,做为上下区分

print('***************************')
for i in ee:
print(i) # 打印ee中的每个键

打印一行星号,做为上下区分

print('***************************')
for i in ee.items():
print(i) # 打印ee的键值对

打印一行星号,做为上下区分

print('***************************')

外循环嵌套内循环

外循环执行一次,内循环执行所有次数

ff = {'hobbies': ['swimming', 'reading', 'dancing']} # 定义一个字典ee,包含一个键为'hobbies'的值为列表['swimming', 'reading', 'dancing']
for key, value in ff.items(): # 遍历字典ee中的每个键值对,将键赋值给变量key,值赋值给变量value
print(key, value) # 打印键和值
for i in value: # 遍历列表value中的每个元素,将元素赋值给变量i
print(key, i) # 打印键和元素

打印一行星号,做为上下区分

print('***************************')
gg = [['nan','nv'],['swimming','reading', 'dancing']] # 定义一个二维列表gg,包含两个列表,分别包含不同的元素
for y in gg: # 循环遍历gg列表中的每个子列表,用变量y代表每个子列表
for r in y: # 循环遍历每个子列表中的每个元素,用变量r代表每个元素
print(r) # 打印变量r的值