循环结构又称为重复结构,能够根据所设立的条件重复执行某一段程序语句,直到条件不成立才跳出循环。Python 提供了 for、while 两种循环语句来执行重复程序代码的工作。
while 循环主要由两个元素组成:
本文我们重点介绍 Python while 循环,想了解 for 循环的读者请转到:Python for循环的用法。
如果所要执行的循环次数确定,那么使用 for 循环就是最佳选择。但对于某些不确定次数的循环,while 循环就可以派上用场了。
while 循环与 for 循环类似,都属于前测试型循环。两者最大的不同之处就在于 for 循环需要给它一个特定的次数;而 while 循环不需要,只要在判断结果为 True 的情况下就能一直执行。
while 循环内的语句可以是一个语句,也可以是多个语句形成的程序块。while 关键字后面到冒号“:”之间的表达式是用来判断是否执行循环的测试条件,语法格式如下。
当程序遇到 while 循环时,它会先判断条件表达式中的条件,如果条件成立,那么程序就会执行 while 循环下的语句一次,完成后会再次判断条件,如果还成立那么就继续执行循环,当条件不成立时循环就中止,例如下面的程序。
当 i 小于 10 时,执行 while 循环内的语句,所以 i 会加 1,直到 i 等于 10。当条件不成立时,就会中止循环,例如下面的代码。
sum=0
count = 0 #计数器
while count <= 20:
sum += count #将3的倍数累加
count += 3
print('1~20内的3的倍数的总和为: ', sum) #输出累加结果
上面例子中的 while 循环变量 sum 用来存储累加结果;count 是一个计数器,用来取得指定数值范围内所有的 3 的倍数,因此循环每执行一次 count 值就加 3。
【示例1】应用 while 循环让用户输入捐款金额,并同步进行累加的工作。当输入的捐款金额为 0 时,输出所有捐款金额的总和。代码如下:
total = 0
money = -1
count = 0 #计数器
# 进入while循环
while money != 0:
money = int(input('输入捐款金额:')) #用int()转为整数
total += money
print('累计:', total)
print('总捐款金额:', total, '元')
输出结果:
程序解说:
【示例2】利用 while 循环来计算当 1000 依次减去 1、2、3……时,到哪个数相减的结果为负。代码如下:
x,sum=1,1000
while sum>0: #while循环
sum-=x
x=x+1
print(x-1)
输出结果:
程序解说:
第 2 行:定义 while 循环的成立条件为 “sum>0”,sum 依次减去 x 的值。x 每循环一次就累加一次,当循环条件不成立时,输出 x 的值。
【示例3】利用辗转相除法与while循环来求任意两个正整数的最大公因数。代码如下:
print("求两个正整数的最大公因数:")
print("输入两个正整数:")
#输入两个正整数
Num1=int(input())
Num2=int(input())
if Num1 < Num2:
TmpNum=Num1
Num1=Num2
Num2=TmpNum#找出这两个正整数中的较大值
while Num2 != 0:
TmpNum=Num1 % Num2
Num1=Num2
Num2=TmpNum #辗转相除法
print("最大公因数为:%d" %Num1)
输出结果:
程序解说:
【示例4】利用 while 循环,让用户输入一个整数并将此整数的每一个数字反向输出。代码如下:
n=int(input("请输入任意一个整数:"))
print("反向输出的结果:",end='')
while n!=0: #while循环
print("%d" %(n%10),end='') #求出余数值
n//=10
输出结果:
程序解说: