您当前的位置:首页 > 计算机 > 编程开发 > Python

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

时间:10-01来源:作者:点击数:

循环结构又称为重复结构,能够根据所设立的条件重复执行某一段程序语句,直到条件不成立才跳出循环。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([起始值], 终止条件[, 间隔值])
  • 起始值:默认为0,参数值可以省略。
  • 终止条件:必要参数,不可省略。
  • 间隔值:计数器的增减值,默认值为1。

上述语法的说明:

  • 1 个参数。range(整数值)产生的序列是 0 到“整数值-1”的序列,例如,range(4)表示会产生 [0,1,2,3] 的序列。
  • 2 个参数。range(起始值,终止值)产生的序列是“起始值”到“终止值-1”的序列,例如,range(2,5)表示会产生 [2,3,4] 的序列。
  • 3 个参数。range(起始值,终止值,间隔值)产生的序列是“起始值”到“终止值-1”的序列,但每次会递增间隔值,例如,range(2,5,2)表示会产生 [2,4] 的序列。
  • range(5)表示从索引值 0 开始,输出 5 个元素,即 0、1、2、3、4 共 5 个元素。
  • range(1,11)表示从索引值1开始,到索引编号 11 前结束,也就是说,索引编号 11 不包括在内,即 1、2、3、4、5、6、7、8、9、10 共 10 个元素。
  • range(4,12,2)表示从索引值 4 开始,到索引编号 12 前结束,也就是说,索引编号 12 不包括在内,递增值为 2,即 4、6、8、10 共 4 个元素。

下面我们来看几个示例。

【示例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
数值累加完毕……

程序解说:

  • 第 1 行:设定变量 sum 的初始值为 0,变量 sum 是用来存储加总结果的。
  • 第 2 行:输出加总前的初始值。
  • 第 3~5 行:for 循环的执行块,其中的 range(11,21)表示由 11 开始,到 21 结束;也就是说,当数值为 21 时,就会结束循环的执行工作。
  • 第 7 行:如果 for 循环执行结束,则输出“数值累加完毕……”。

下面的程序示例是计算 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

程序解说:

  • 第 2 行:设定变量的初始值为 1。
  • 第 3~5 行:循环重复条件为 i 小于等于 10,i 的递增值为 1,所以当 i 大于 10 时,就会停止 for 循环。

注意:在使用 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

程序解说:

  • 第 3 行:外层 for 循环控制i输出,表示可以运算 n 次。
  • 第 4~5 行:计算出 n! 的值。
  • 第 6 行:累加到 sum 变量中。
  • 第 7 行:n1 重新设定为 1。

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

程序解说:

  • 第 1 行:设定 sigma 的初始值。
  • 第 2 行:输入 k 值。
  • 第 3~8 行:根据给定的公式,配合 for 循环,求 π 的近似值并输出。
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门