首页 > 编程笔记

Python for循环语句的用法(附带示例)

循环结构又称为重复结构,能够根据所设立的条件重复执行某一段程序语句,直到条件不成立才跳出循环。Python 提供了 for、while 两种循环语句来执行重复程序代码的工作。

for 循环主要由两个元素组成:
本文我们重点介绍 Python for 循环,想了解 while 循环的读者请转到:python while 循环的用法

Python for 循环

for 循环又称为计数循环,是程序设计中较常使用的一种循环形式,可以重复执行固定次数的循环。如果程序设计所需要的循环执行次数固定,那么 for 循环就是最佳选择。图 1 所示为 for 循环的执行流程图。

图1
图1

for 循环可以通过访问任何序列来操作,而序列可以是一串数字、列表或字符串,按序列顺序进行访问,语法结构如下。

for 元素变量 in 序列项目:
    # 所要执行的语句


注意: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='')
输出结果:

abcdefghijklmnopqrstuvwxyz


【示例2】程序代码如下:
x = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
for i in x:
    print(i)
输出结果:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday


【示例3】如何利用 for 循环访问序列项目,同时利用 title() 函数将第一个字母以大写形式显示。代码如下:
x = ['michael', 'tom', 'andy', 'june', 'axel']
print("我有几位好朋友: ")
for friend in x:
    print(friend.title()+ " 是我的好朋友")
输出结果:

我有几位好朋友:
Michael 是我的好朋友
Tom 是我的好朋友
Andy 是我的好朋友
June 是我的好朋友
Axel 是我的好朋友


【示例4】程序代码如下:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in x:
    print(i,end=' ')
输出结果:

1 2 3 4 5 6 7 8 9 10

range()函数

Python 提供了 range() 函数来搭配 for 循环,这个函数的主要功能是建立整数序列。range() 函数的语法如下。

range([起始值], 终止条件[, 间隔值])


上述语法的说明:
下面我们来看几个示例。

【示例1】在 for 循环中搭配使用 range() 函数输出 1~10,每个数字之间以一个空格隔开。代码如下:
for x in range(1,11): #数值1~10
    print(x, end=" ")
print()
输出结果:

1 2 3 4 5 6 7 8 9 10


【示例2】如何利用 for 循环输出指定数量的特殊符号。代码如下:
n=int(input("请输入要输出的特殊符号的数量: "))
for x in range(n): #循环次数为n
    print("$",end="")
print()
输出结果:

请输入要输出的特殊符号的数量: 10
$$$$$$$$$$


【示例3】利用 for 循环并配合 range() 函数来计算 11~20 的数字加总。代码如下:
sum = 0 #存储加总结果,初始值为0
print('进行加总前的初始值:', sum) #输出加总前的初始值
for i in range(11, 21):  
    sum += i  #将数值累加  
    print('累加值=', sum) #输出累加结果
else:  
    print('数值累加完毕……')
输出结果:

进行加总前的初始值: 0
累加值= 11
累加值= 23
累加值= 36
累加值= 50
累加值= 65
累加值= 81
累加值= 98
累加值= 116
累加值= 135
累加值= 155
数值累加完毕……

程序解说:
下面的程序示例是计算 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) #输出乘积的结果
输出结果:

product=3628800

程序解说:
注意:在使用 for 循环时还有一个地方要特别留意,那就是 print() 函数。如果该 print() 函数有缩进的话,就表示在for 循环内有要执行的工作,就会按照执行次数来输出。如果没有缩进,就表示不在 for 循环内,只会输出最后的结果。

Python for 嵌套循环

接下来介绍一种嵌套循环,也就是多层次的 for 循环结构。在嵌套 for 循环结构中,必须先等内层循环执行完毕,才会逐层继续执行外层循环。两层式的嵌套 for 循环结构格式如下。

图2
图2

许多人会利用嵌套循环绘制特殊的图案,例如,以下的程序代码就可以绘制三角形图案。
n=int(input("请输入要产生图案的魔术数字: "))
for x in range(1,n+1): #循环次数为n
    for j in range(1,x+1):
        print("*",end="")
    print()
输出结果:

请输入要产生图案的魔术数字: 8
*
**
***
****
*****
******
*******
********


【示例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()
输出结果:
1*1=1  2*1=2  3*1=3  4*1=4  5*1=5  6*1=6  7*1=7  8*1=8  9*1=9
1*2=2  2*2=4  3*2=6  4*2=8  5*2=10 6*2=12 7*2=14 8*2=16 9*2=18
1*3=3  2*3=6  3*3=9  4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27
1*4=4  2*4=8  3*4=12 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36
1*5=5  2*5=10 3*5=15 4*5=20 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45
1*6=6  2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 7*6=42 8*6=48 9*6=54
1*7=7  2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 8*7=56 9*7=63
1*8=8  2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 9*8=72
1*9=9  2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

【示例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))
输出结果:

请输入任意一个整数:8
1!+2!+3!+...+8!=46233

程序解说:
已知有以下公式,请设计一个程序,根据输入的 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))
输出结果:

请输入k值:10000
PI = 3.141493

程序解说:

优秀文章