使用while循环控制流程

Python中,还有一种循环方式,可以在特定条件成立时,不断循环一块代码,在学习这种循环时,我们有时会写错代码使程序进入无限循环,这时候我们需要按下键盘上的Ctrl+C来强制结束程序(MacOS按下control+C)。

 

  • while循环

我们先看看while循环的一般性写法:

while <条件>:
    <缩进语块>

学了之前的循环后,我们就很好理解格式上的问题了。从意思上来看:只要<条件>成立(True),就一直循环执行缩进语块中的命令。

有同学就说,那写好的<条件>还能变哇?不然岂不是要么不循环要么死循环了吗?

假设我们要写一个程序,来计算金融投资时,不同的年利率需要多少年才能使本金翻一番,我们先从数学的角度梳理一下这个问题:

假设本金是1,年利率是x;
第一年连本带息我们将获得:1*(1+x);
第二年则是1*(1+x)*(1+x);
……
第n年则是1*(1+x)^n;
为了使资产“翻一番”,只要1*(1+x)^n < 2,就要执行再计算一年利息的命令

观察下面的程序:

years = 0 #我们令一个变量years初始为0,用来累加所需年限
fund = 1 #我们令一个变量fund初始为1,用来累加资产本息总和
rate = eval(input('请输入投资产品的年化利率(如10%,请输入0.1):'))

#只要资产总额小于2,我们就不断执行:年限+1 和 资产乘以(1+年利率)的操作
while fund < 2:
    years = years +1
    fund = fund * (1+rate)

print('您的资产将在', years, '年后翻一番。', sep ='') #注意本行没有缩进

我们发现,由于while后面的条件中存在一个变量,该变量在每循环一次都会发生变化,因此,当循环次数足够多时,将会出现fund > 2的情况。此时,循环终止,程序开始运行循环下方无缩进的语句。如果你写好了,保存以后按下F5测试一下吧~

 

  • 程序的逻辑
while <条件>:
    <缩进语块>

while语句和之前学习的if语句类似,只有当<条件>为True的时候,会执行下方的缩进语块。不同在于,while下方的缩进语块执行完毕之后,程序将返回while所在行,再次检查<条件>是否为True,这个过程将持续到<条件>变为False为止。

我们在使用while循环时,应注意检查<条件>是否有可能变为False,否则程序将进入无限循环。

 

  • 本节练习

试写一个无限循环的while语句,运行观察,并利用键盘打断程序运行

看答案

x = 1

while x < 2:
    print('哟')

酱哦

写一个程序,提示用户输入地名,并将用户输入的地名放入一个列表中。当用户输入空字符串”时,程序返回装有地名的列表并停止运行,运行效果如下:

请输入一个地名(结束请直接按回车):北京
请输入一个地名(结束请直接按回车):厦门
请输入一个地名(结束请直接按回车):西安
请输入一个地名(结束请直接按回车):昆明
请输入一个地名(结束请直接按回车):
['北京', '厦门', '西安', '昆明']
>>> 

看答案

place_list = []
place_name = input('请输入一个地名(结束请直接按回车):')

while place_name != '':#也可以写 while not place_name = ''
    place_list.append(place_name)
    place_name = input('请输入一个地名(结束请直接按回车):')

print(place_list)

酱哦

 
如果还有什么问题或者发现了文章的错误,欢迎给我留言!邮箱可以随便乱写~

发表评论

邮箱地址不会被公开。 必填项已用*标注