for-in 循环专门用于遍历范围、列表、元素和字典等可迭代对象包含的元素。fr-in循环的语法格式如下:
for 变量 in 字符串|范围|集合等:
statements
对于上面的语法格式有两点说明。
1)for-in循环中的变量的值受for-in 循环控制,该变量将会在每次循环开始时自动被赋值,因此程序不应该在循环中对该变量赋值。
2)for-in循环可用于遍历任何可迭代对象。所谓可迭代对象,就是指该对象中包含一个__iter__方法,且该方法的返回值对象具有 next()方法。
for-in循环可用于遍历范围。例如,如下程序使用for-in循环来计算指定整数的阶乘。
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : Laopi
s = input("请输入您想计算的阶乘:")
m = int(s)
result =1
# 使用for-in循环遍历范围
for num in range(1,m+1):
result *=num
print(result)
上面程序将会根据用户输入的数字进行循环。假如用户输入10,此时程序将会构建一个range(1.10)对象(不包含10),因此for-in 循环将会自动循环9次,在每次循环开始时,num都会被依次自动赋值为range所包含的每个元素。
for-in循环中的变量完全接受for-in 循环控制,因此该变量也被称为循环计数器运行上面程序,如果输入10,将会看到如下运行过程。
程序对 for-in 循环的循环计数器赋值在语法上是允许的,但没有什么意义,而且非常容易导致错误。例如如下程序
for i in range(1,10):
i = 20
print("i:",i)
上面程序中的i=20代码对循环计数器i赋值,这样导致程序每次循环时都要先对变量i赋值,当程序刚进入循环体时,i就被重新赋值为20,因此在循环体中看到的i永远是20运行上面程序,将看到如下输出结果。