循环结构又称为重复结构,能够根据所设立的条件重复执行某一段程序语句,直到条件不成立才跳出循环。Python 提供了 for、while 两种循环语句来执行重复程序代码的工作。
for 循环主要由两个元素组成:
本文我们重点介绍 Python for 循环,想了解 while 循环的读者请转到:python while 循环的用法。
for 循环又称为计数循环,是程序设计中较常使用的一种循环形式,可以重复执行固定次数的循环。如果程序设计所需要的循环执行次数固定,那么 for 循环就是最佳选择。图 1 所示为 for 循环的执行流程图。
for 循环可以通过访问任何序列来操作,而序列可以是一串数字、列表或字符串,按序列顺序进行访问,语法结构如下。
注意:Python 序列项目可以将多个数据类型相同的数据集合在一起,序列中的数据称为元素(Element)或项目(Item),通过“索引值”可以取得存于序列中的所需的数据元素。列表、元组或字符串都是一种序列类型,它们的元素类型一样。
上述 Python 语法所代表的意义是 for 循环会将一序列(如字符串或列表)内所有的元素都访问一遍,访问的顺序是目前序列内元素或项目的顺序。
例如,下面几个示例的 x 变量值都可以作为 for 循环的访问序列项目。
【示例1】程序代码如下:
x = "abcdefghijklmnopqrstuvwxyz"
x = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x = "abcdefghijklmnopqrstuvwxyz"
for i in x:
print(i,end='')
输出结果:
【示例2】程序代码如下:
x = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
for i in x:
print(i)
输出结果:
【示例3】如何利用 for 循环访问序列项目,同时利用 title() 函数将第一个字母以大写形式显示。代码如下:
x = ['michael', 'tom', 'andy', 'june', 'axel']
print("我有几位好朋友: ")
for friend in x:
print(friend.title()+ " 是我的好朋友")
输出结果:
【示例4】程序代码如下:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in x:
print(i,end=' ')
输出结果:
Python 提供了 range() 函数来搭配 for 循环,这个函数的主要功能是建立整数序列。range() 函数的语法如下。
上述语法的说明:
下面我们来看几个示例。
【示例1】在 for 循环中搭配使用 range() 函数输出 1~10,每个数字之间以一个空格隔开。代码如下:
for x in range(1,11): #数值1~10
print(x, end=" ")
print()
输出结果:
【示例2】如何利用 for 循环输出指定数量的特殊符号。代码如下:
n=int(input("请输入要输出的特殊符号的数量: "))
for x in range(n): #循环次数为n
print("$",end="")
print()
输出结果:
【示例3】利用 for 循环并配合 range() 函数来计算 11~20 的数字加总。代码如下:
sum = 0 #存储加总结果,初始值为0
print('进行加总前的初始值:', sum) #输出加总前的初始值
for i in range(11, 21):
sum += i #将数值累加
print('累加值=', sum) #输出累加结果
else:
print('数值累加完毕……')
输出结果:
程序解说:
下面的程序示例是计算 10!的值,也是 for 循环的应用。我们知道符号 “!” 代表数学上的阶乘。例如,4 阶乘可写为 4!,代表 1*2*3*4 的值;5!=1*2*3*4*5。
【示例4】计算 10! 的值。代码如下:
#计算10! 的值
product=1
for i in range(1,11): #定义for循环
product*=i
print("product=%d" %product) #输出乘积的结果
输出结果:
程序解说:
注意:在使用 for 循环时还有一个地方要特别留意,那就是 print() 函数。如果该 print() 函数有缩进的话,就表示在for 循环内有要执行的工作,就会按照执行次数来输出。如果没有缩进,就表示不在 for 循环内,只会输出最后的结果。
接下来介绍一种嵌套循环,也就是多层次的 for 循环结构。在嵌套 for 循环结构中,必须先等内层循环执行完毕,才会逐层继续执行外层循环。两层式的嵌套 for 循环结构格式如下。
许多人会利用嵌套循环绘制特殊的图案,例如,以下的程序代码就可以绘制三角形图案。
n=int(input("请输入要产生图案的魔术数字: "))
for x in range(1,n+1): #循环次数为n
for j in range(1,x+1):
print("*",end="")
print()
输出结果:
【示例5】如何利用两个 for 循环输出九九乘法表。代码如下:
"""
程序名称:九九乘法表
"""
for x in range(1, 10):
for y in range(1, 10):
print("{0}*{1}={2: ^2}".format(y, x, x * y), end=" ")
print()
输出结果:
【示例6】利用 for 循环来让用户输入n值,并计算出 “1!+2!+…+n!” 的总和。代码如下:
sum=0
n1=1
n=int(input("请输入任意一个整数:"))
for i in range(1,n+1):
for j in range(1,i+1):
n1*=j; # n!的值
sum+=n1;# 1!+2!+3!+...+n!
n1=1
print("1!+2!+3!+...+{0}!={1}".format(n,sum))
输出结果:
程序解说:
已知有以下公式,请设计一个程序,根据输入的 k 值,求 π 的近似值。
其中,k 的值越大,π 的近似值越精确,本程序限定只能使用 for 循环。
【示例7】求 π 的近似值。代码如下:
sigma=0
k=int(input("请输入k值:")) #输入k值
for n in range(0,k,1):
if n & 1: #如果n是奇数
sigma += float(-1/(2*n+1))
else: #如果n是偶数
sigma += float(1/(2*n+1))
print("PI = %f" %(sigma*4))
输出结果:
程序解说: