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)
酱哦
如果还有什么问题或者发现了文章的错误,欢迎给我留言!邮箱可以随便乱写~