[Python学习日记-11] Python中的流程控制(while)
简介
while 语法
break 和 continue 语法
while ... else ... 语法
死循环(dead loop)
简介
从上一篇文章[Python学习日记-10] Python中的流程控制(if...else...)的练习当中我们就已经可以亏看到一点 while 的一点阵容了,这一个代码的主要功能就是循环执行一段,我们先看一下下面的一段代码:
python">import randomnumber = random.randint(0,10)
print("请输入你心目中的号码:")
user_number = int(input())if user_number == number:print("恭喜你,猜对了")elif user_number < number:print("不好意思,猜小了")elif user_number > number and user_number <= 10:print("不好意思,猜大了")else:print("超出范围请重猜")
这是一个简单的猜数程序,即使是小白,也觉得的太 low 了是不是,以后要修改功能还得修改3次,因此记住,写重复的代码是程序员最不耻的行为。那么如何做到不用写重复代码又能让程序重复一段代码多次呢?循环语句就派上用场啦。
while 语法
一、语法结构
while 条件:
执行代码...
循环的语法相当简单,在这个代码里面 while 就是当的意思,换句话来说,while 后面带条件就是表示,当其后面的条件成立,就执行 while 下面的代码。
二、代码示例
while 循环的简单使用:
python">count = 0while count < 100:print("我想让你得到我。。。。", count)count += 1 # 循环条件的计数运算,如果条件没有变化将会变成死循环
下面我们使用 while 来改造一下之前写的猜数代码吧
python">import randomnumber = random.randint(0,10)count = 0
while count < 5:print("请输入你心目中的号码:")user_number = int(input())if user_number == number:print("恭喜你,猜对了")elif user_number < number:print("不好意思,猜小了")elif user_number > number and user_number <= 10:print("不好意思,猜大了")else:print("超出范围请重猜")count += 1
经过我们的改造现在代码已经具有了一定的便捷性,但是还是存在一些 bug,从上面的效果图你会看到就算你猜对了还是会继续让你猜,知道你猜够5次为止才会结束循环,如果想要结束这种尴尬的场面,那么我们就要使用下面将要提到的 break 语法了。
break 和 continue 语法
上面我们改造的代码当中存在着一个猜对了还会继续让你猜的 bug,有的人可能会想到使用 exit() 进行退出,但是这个方法是直接退出程序的,如果想结束循环后再执行写代码的话这个就不太好了,而我们要怎么只退出循环而不退出程序呢?那就要用到 break 了。
break 的作用是终止所在的循环,这里还有一个类似的语法,那就是 continue 语法,这个语法是终止当次循环,但它不会结束循环,而是进入下一次循环当中。
一、语法结构
while 条件:
执行代码...
break
while 条件:
执行代码...
continue
二、代码示例
break示例:
那我们使用 break 语法来修复上面代码猜对后继续执行的 bug
python">import randomnumber = random.randint(0,10)count = 0
while count < 5:print("请输入你心目中的号码:")user_number = int(input())if user_number == number:print("恭喜你,猜对了")break # 终止循环elif user_number < number:print("不好意思,猜小了")elif user_number > number and user_number <= 10:print("不好意思,猜大了")else:print("超出范围请重猜")count += 1
continue 示例:
我们使用 continue 语法来实现打印除了10-20之外1到100之间的数
python">count = 0
while count < 100:count += 1if count >= 10 and count <= 20:continue # 终止当次循环,进入下次循环print(count)
while ... else ... 语法
这个语法的意思是当循环结束后将会执行 else 下的代码,这个 else 和循环是一体的,所以说当遇到 break 是不会执行 else 下的代码的
一、语法结构
while 条件:
执行代码...
else:
执行代码...
二、代码示例
当程序正常结束时:
python">count = 0
while count < 100:count += 1if count > 10 and count < 20:continue # continue 只是跳过一次循环,并不会结束 while,所以 else 还是会继续执行的print(count)
else: # 当循环正常结束时执行print("我正常结束啦")
当遇到 break 终止循环时:
python">count = 0
while count < 100:count += 1if count == 50:print("我被 break 了")breakprint(count)
else: # 当循环正常结束时执行,被break中止时,则不执行print("我正常结束啦")
这里顺带一提,如果把上面代码中的 break 替换成 exit() 照样也不会执行 else 下的代码,需要注意的是 break 和 continue 只能在循环中使用,当然这里的循环除了 while 外还包括 for 循环,不要突发奇想的想在程序中某个地方跳过某段代码时使用,这样会报错的。
死循环(dead loop)
死循环在介绍 while 语法时也提到过,但是那时候的死循环是我们想要避免的,而我们现在说的死循环是我们想要的死循环,也就是说是正确的死循环。死循环我们什么时候会使用呢?其实还挺常用的,因为我们执行很多程序都是需要和用户不断交互的,这就说明我们的程序不能说输入多少次就结束,而是用户输入特定的指令后才能结束程序,这样我们就需要使用到死循环了
一、语法结构
while True:
执行代码...
二、代码示例
python">while True:print("你是风儿我是沙,缠缠绵绵到天涯....")
执行这个代码将会运行到天昏黑地、世界末日、长长久久...所以说当你有需求写一个死循环时请确认清楚循环内的内容是否正确,如果循环内是运算量很大,或者内存占用量很大的话,很容易导致电脑蓝屏或死机。
本篇练习:双色球彩票程序练习