何为死循环:在编程中,一个无法靠自身的控制终止的循环被称为死循环。

死循环的使用:死循环并非一无是处,C语言中死循环while true或 while 1 是单片机编程的普遍用法,死循环一直运行等待中断程序发生,然后去处理中断程序。
在Python中,我们也可以利用死循环完成特定功能。
下面这段死循环程序可以用来一直捕捉输入异常。
while True:
try:
x=int(input("Please enter a number:"))
break
except ValueError:
print("Oops,that was no valid number. Try again ...")
后测循环:

假设程序需要用户输入一个非负数
如果输入错误,重新提示用户输入直到得到一个有效值。
伪代码如下:
重复执行以下语句
接受外部输入数据
直到外部输入为负值为止
循环不断接收输入,直到接受到合法的值为止
条件判断在循环体后面,称之为后测循环(即前面提到过的“直到型循环”)
后测循环至少执行一次循环体 后测循环实现:
Python没有后测循环语句,但可以通过while间接实现。
思想是设计一个循环条件,直接进入循环体,循环至少执行一次,相当于后测循环。
  number=-1
while number<0:
number=eval(input("Enter a positive number:"))
break语句也可以用来实现后测循环:
  while True:
number=eval(input("Enter a positive number:"))
if x>=0:break #如果数字有效则跳出循环 #while语句体永远执行,if条件决定循环退出
另外:if语句体只包含一个语句时,break可以跟在if同一行。这种结构被称为循环出口。

#后测循环代码:
在前面的while版本的后测循环代码中添加一个if语句,使得在有效输入时不显示警告。
修改代码如下:
  number=-1
while number<0:
number=eval(input("Enter a positive number:"))
if number<0:
print("The number you entered was not positive")
在上面这段代码中,合法性检验重复了两次。
#后测循环代码:
限定合法性检验只判断一次,需为if添加匹配的else语句来实现
修改后的代码如下:
    while True:
number=eval(input("Enter a positive number:"))
if x>=0:
break ##如果数字有效则跳出循环
else:
print("The number you entered was not positive")

半路循环:运用break中途退出循环,循环出口在循环体中部,被称为半路循环


while True:
number=eval(input("Enter a positive number:"))
if x>=0:break #跳出循环
print("The number you entered was not positive")

半路循环-哨兵:半路循环退出实现哨兵循环的一般模式:


While True:
Get next data item
if the item is the sentinel :break
process the item
我们注意:break语句是一种很方便的设计,但是,任何算法都可以使用不包含break语句的其他语句来实现
在程序中是否使用break语句,跟个人编程风格有关。
应避免在一个循环体内使用过多的break语句。因为当循环有多个出口的时候,程序逻辑就显得不够清晰了。

Python 死循环和嵌套循环的更多相关文章

  1. Python 死循环

    while True: try: x=int(input("Please enter a number:")) break except ValueError: print(&qu ...

  2. mooc-python语言语法week3-6

    week3 1.类型的概念:程序编程不允许有歧义的数据类型存在,所以对数据进行了划分,python语言类型分为,数字类型.字符串类型.元组类型.列表类型.文件类型.字典类型. i:数字类型: pyth ...

  3. python之路1(初识python)

    python简史: python我认为特性就是简洁,灵活,高效. python重要版本: python1991年问世, python2.4:2004,同年django框架诞生. python2.6:2 ...

  4. python 线程,GIL 和 ctypes(转)

    原文:http://zhuoqiang.me/python-thread-gil-and-ctypes.html GIL 与 Python 线程的纠葛 GIL 是什么东西?它对我们的 python 程 ...

  5. 多核CPU上python多线程并行的一个假象

    GIL 与 Python 线程的纠葛 GIL 是什么东西?它对我们的 python 程序会产生什么样的影响?我们先来看一个问题.运行下面这段 python 程序,CPU 占用率是多少? # 请勿在工作 ...

  6. python多线程为什么不能利用多核cpu

    GIL 与 Python 线程的纠葛 GIL 是什么东西?它对我们的 python 程序会产生什么样的影响?我们先来看一个问题.运行下面这段 python 程序,CPU 占用率是多少? # 请勿在工作 ...

  7. python 多线程与GIL

    GIL 与 Python 线程的纠葛 GIL 是什么?它对 python 程序会产生怎样的影响?我们先来看一个问题.运行下面这段 python 代码,CPU 占用率是多少? # 请勿在工作中模仿,危险 ...

  8. (转)GIL 与 Python 线程的纠葛

    原文地址:http://zhuoqiang.me/python-thread-gil-and-ctypes.html 作者:Qiang GIL 与 Python 线程的纠葛 GIL 是什么?它对 py ...

  9. 学完Python,我决定熬夜整理这篇总结

    目录 了解Python Python基础语法 Python数据结构 数值 字符串 列表 元组 字典 集合 Python控制流 if 判断语句 for 循环语句 while 循环语句 break 和 c ...

随机推荐

  1. 跟我学Spring3(9.2):Spring的事务之事务管理器

    原文出处: 张开涛9.2.1 概述 Spring框架支持事务管理的核心是事务管理器抽象,对于不同的数据访问框架(如Hibernate)通过实现策略接口PlatformTransactionManage ...

  2. JDBC在Java Web中的应用——分页查询

    分页查询 通过JDBC实现分页查询的方法有很多种,而且不同的数据库机制也提供了不同的分页方式,在这里介绍两种非常典型的分页方法. 通过ResultSet的光标实现分页 通过ResultSet的光标实现 ...

  3. insert-delete-getrandom-o1-duplicates-allowed

    https://leetcode.com/problems/insert-delete-getrandom-o1-duplicates-allowed/ public class Randomized ...

  4. UVA 10474 (13.08.04)

     Where is the Marble?  Raju and Meena love to play with Marbles. They have got a lotof marbles with ...

  5. android.net.Uri 简介 API

    android.net.Uri 简介 public abstract class android.net.Uri extends Object implements Parcelable, Compa ...

  6. 输入框提示文字跨浏览器的placeholder-jQuery版

    <script type="text/javascript" src="jquery-1.7.2.min.js"></script> & ...

  7. 【Nodejs】理想论坛帖子爬虫1.01

    用Nodejs把Python实现过的理想论坛爬虫又实现了一遍,但是怎么判断所有回调函数都结束没有好办法,目前的spiderCount==spiderFinished判断法在多页情况下还是会提前中止. ...

  8. sed 常用的命令

    n: 读取一行,执行n,把当前行打印到标准输出,再读取一行,覆盖当前行,然后对模式空间执行一组模式/行为.N:读取一行,执行N,再读取一行,现在模式空间有两行内容,执行一组模式/行为.如下:[root ...

  9. linux下的tar命令

    tar 命令在打包的时候如果是通过绝对路径压缩打包,在不特殊参数时,解压时会在当前路径下创建打包时的路径,并提示警告: tar: Removing leading `/' from member na ...

  10. spring_restful_json_jdbc

    使用Spring MVC +JDBC 实现输出Json数据和视图两种形式 最后面有源代码 从web.xml開始配置: 声明定义两个Servlet各自是输出视图和json <!-- 声明一个Ser ...