for循环通常用于迭代序列,它的遍历对象必须可迭代对象(字符串、列表、元组、集合、字典)。
for-in循环
语法结构:
for 自定义变量 in 可迭代对象:
重复执行的代码块
例1:循环遍历字符串中的每一个字符。
mystr = 'Python'
for i in mystr: # 将取出来的值赋值给i
print(i)
例2:打印出列表中的所有元素。
lst = ['python','php','java','go']
for i in lst:
print(i)
range()函数产生的是一个整数序列,也是一个可迭代对象。
例3:输出1、3、5、7、9。
# 输出1、3、5、7、9
for i in range(1,10,2):
print(i)
# 输出2、4、6、8、10
for i in range(2,11,2):
print(i)
例4:输出1-100的偶数和
# 计算1-100的偶数和
sum = 0 # 存储偶数和
# 第一种方法:根据和2取余,判断是否为偶数
for item in range(1,101):
if not item%2: sum+=item
print(sum)
# 第二种方法:计算偶数和,那就从2开始,步长设置为2
for item in range(2,101,2):
sum+=item
print(sum)
若是在循环体内不需要使用自定义变量,可将自定义变量设为下划线“_”。
例5:重复输出5次“我爱Python”。
for _ in range(5):
print('我爱Python')
水仙花数问题
水仙花数:abc = a**3+b**3+c**3,即个位的三次方+十位的三次方+百位的三次方得到的和等于这个数。
"""
输出100-999的水仙花数
153 153//100=1 153//10=15 15%10=5 153%10=3
个位:i%10
十位:i//10%10
百位:i//100
"""
for i in range(100,1000):
if (i%10)**3+(i//10%10)**3+(i//100)**3 == i:
print(i)
for循环中的break和continue
# 遍历字符串'hello,world'遇到','结束遍历
for i in 'hello,world':
if i == ',': break
print(i,end='')
print()
# 遍历字符串'hello,world',去掉其中的','
for i in 'hello,world':
if i == ',': continue
print(i,end='')
for 循环与 else 语句
语法格式:
for 变量 in 可迭代对象:
循环体代码
else:
正常结束循环后,会执行的代码
else语句和if放在一起使用:当if条件表达式不成立时执行else。
和while、for循环放在一起使用:当循环正常结束后再执行一次else代码块,但如果循环体中出现break,就不会执行else语句。(continue是正常结束循环)
实例1:输入登录密码,输错超过3 次就会提示‘密码输入错误次数过多,账户已冻结。’
for i in range(3):
pwd = input('请输入密码(6位数):')
if pwd == '888888':
print('密码正确')
break # 密码输入正确,就会登录成功,跳出循环
else:
print('密码错误,请重新输入。')
else: # 如果循环正常结束,也就是3次密码都输入错误了,就会执行else中的代码
print('密码输入错误次数过多,账户已冻结。')
for – else 的应用
for – else 一般用于迭代遍历嵌套的数据类型时使用。
实例2:要求查询某个学生是否存在,如果存在,则打印它的全部信息,如果不存在,则循环结束后,给出一个统一的提示。
# 由字典组成的列表,字典中是某学生的详细信息
students = [
{'name': 'Alice','age': 17,'gender': 'female','height': 160,'weight': 90},
{'name': 'Bob','age': 15,'gender': 'male','height': 157,'weight': 100},
{'name': 'Tom','age': 16,'gender': 'male','height': 168,'weight': 105},
{'name': 'Jack','age': 16,'gender': 'male','height': 165,'weight': 112}
]
find_name = 'Tom'
for stu_info in students:
if stu_info.get('name') == find_name:
print(stu_info)
break # 如果找到了,就直接退出循环
else:
# 在搜索完列表后,没有找到指定的人,给出的统一提示
print(f'没有找到 {find_name}')
# 可以将上面查询的代码封装进一个函数中,然后给函数传递要查询的那个学生的姓名即可
def find_stu(name):
for stu_info in students:
if stu_info.get('name') == name:
# print(stu_info)
# break
return stu_info
else:
return f'没有找到 {find_name}'
result = find_stu('Jack')
print(result)
输出结果:{‘name’: ‘Tom’, ‘age’: 16, ‘gender’: ‘male’, ‘height’: 168, ‘weight’: 105}
输出结果:{‘name’: ‘Jack’, ‘age’: 16, ‘gender’: ‘male’, ‘height’: 165, ‘weight’: 112}
嵌套循环
循环结构中又嵌套了一个新的完整的循环结构。外层循环执行一次,内层循环执行完整的一轮。
例:打印9*9乘法表
# 输出3*4的矩阵
for i in range(3):
for j in range(4):
print('*',end=' ')
print()
# 9*9乘法口诀表
for i in range(1,10):
for j in range(1,i+1): # 表达式的个数(和j有关)和行数相同
print(f'{j}*{i}=',i*j,end='\t')
print() # 输出完一行的表达式后换行
for-in 循环和 while 循环的区别
他们二者的本质上没事区别,while 循环用于不知循环次数的循环,for 循环用于已知循环次数的循环。
for 循环不需要提前设置变量。通常用于遍历序列,循环的次数取决于 in 后面的序列包含的元素个数。
while 循环需要提前设置初始化变量,称之为‘条件循环’,循环次数取决于 while 后面的条件表达式的值何时为 False。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
暂无评论内容