vbs无限循环代码_Python while循环简介(二)

2.3 使用标志

上一节说到,Python中的while循环可以使用关键字让用户选择何时退出。实际情况是,一个循环中可能有很多结束条件,比如游戏中你的血量降为零、一局游戏的倒计时结束、你的基地被毁坏、你要营救的人质被杀害等等,这些情况只要有一个发生那么这一局游戏就宣告结束。如果将所有的条件写在while语句中,不仅非常麻烦,还影响程序的可读性和复杂性。解决办法就是使用标志。

简单来说,在程序中定义一个标志,就是告诉程序,当标志为True时继续运行,当标志为False时停止运行。通过修改上一节的程序parrot.py,我们一起学习如何使用标志。


prompt = "\nTell me something, and I'll repeat it back to you:"

prompt += "\nEnter 'quit' to end the program."

message = ""

①active = True

②while active:

    message = input(prompt)

③    if message == 'quit':

        active = False

    else:

        print(message)


①处我们将变量active设置为True,②处while循环运行的条件即为active=True,③处我们添加这样一个if条件语句:当用户输入的字符串为 'quit' 时,变量active为False,否则打印变量message中的值。程序运行结果与之前的程序parrot.py相同,但是当结束循环的条件变得非常复杂时,标志会使程序变的非常清晰明了。这便是标志的作用。

00c15c849cb225d0e79786c21c2b9a64.png

2.4 使用break退出循环

要马上退出循环,不再执行余下的代码,可使用break语句。

例如我们要让一个用户指出他曾到过哪些城市,只要当他输入字符串 'quit' 时退出循环:

cities.py


prompt = "\nPlease enter the name of a city you have visited: "

prompt += "\n(Enter 'quit' when you are finished.)"

①while True:

    city = input(prompt)

②    if city == 'quit':

        break

    else:

        print(city)


这个程序中我们首先设置提示。再设置while循环的条件为“始终为True”,也就是不停循环。但是这个程序并不会因此而无限循环,因此再while循环结构中我们加入了这样一个循环条件:当用户输入为字符串 'quit' 时则执行break,也就是结束整个循环,否则打印变量city中的值(也就是用户输入)。输出的结果是怎样的呢?


Please enter the name of a city you have visited: 

Enter 'quit' when you are finished.Beijing

Beijing

Please enter the name of a city you have visited: 

Enter 'quit' when you are finished.Shanghai

Shanghai

Please enter the name of a city you have visited: 

Enter 'quit' when you are finished.quit


可见,当我们输入城市 'Beijing' , 'Shanghai'时,程序会输出相应的城市并继续下一个循环。而当我们输入字符串 'quit' 时,循环立即停止执行。这就是break的用法:当执行break时,不再继续执行余下的循环代码并立即结束循环。

d33c2e46a4df513e47d05ff8a5fffca9.png

2.5 在循环中使用continue

与break类似,当执行continue时也不再执行循环结构中余下的代码,唯一不同的是整个循环结构不会停止执行,而是回到while循环最初的循环判断条件处(第一句),只要循环条件还满足则可以立即进入下一次循环。

例如,我们编写一个打印一到十以内所有奇数的程序:

continue.py


current_number = 0

while current_number < 10

①    current_number += 1

②    if current_number %2 == 0:

③        continue

    else:

        print(current_number) 


首先我们将变量current_number初始值设置为0,接着在while循环中将范围设置在10以内。接着每进入一次循环变量current_number自增1。①处的if条件语句是说,当变量current_number中的值可以被2整除,也就是这个数值是偶数时运行continue,回到循环开头判断循环条件是否满足下一次循环,本次循环不再执行余下代码;否则打印处变量中的数值。运行结果为:


1

3

5

7

9


2.6 避免无限循环

当while循环条件始终结束循环时,程序就进入了无限循环状态。例如我们举一个最简单的例子,将上一个程序continue.py的while循环条件改为 "while current_number >= 0" ,那么可想而知循环条件会始终满足True,程序会无休无止的打印奇数,直到系统内存被占满:

bad_continue.py


current_number = 0

while current_number >= 0:

    current_number += 1

    if current_number %2 == 0:

        continue

    else:

        print(current_number) 


程序运行结果为:


1

3

5

7

9

...

7879

7881

7883

...


6fa6a53024aadcda7890353c5cf970e0.png

程序运行以后会不停的打印每一个奇数直到程序崩溃。每一个程序员都难免会因为失误编写出无限循环,关键就在于检查循环条件设置的是否正确。当你不小心陷入无限循环时,可按Ctrl+C,也可以关闭输出的终端窗口。

fe4c987c9dcda094594c745ea06ec868.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值