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

死循环的使用:死循环并非一无是处,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. 字符测试篇isalnum isalpha isascii iscntrl isdigit isgraphis islower isprint isspace ispunct isupper isxdigit

    isalnum(测试字符是否为英文或数字) 相关函数 isalpha,isdigit,islower,isupper 表头文件 #include<ctype.h> 定义函数 int isa ...

  2. C/C++ 语言获取文件大小

    在C语言中测试文件的大小,主要使用二个标准函数. 1.fseek 函数原型:int fseek ( FILE * stream, long int offset, int origin ); 参数说明 ...

  3. 搭建个人博客-hexo+github

    自己也算是摸爬滚打搭建成功,然后自己再重新安装部署一遍,把完整步骤分享给大家,同时最后有一些连接,如果我的步骤不行,大家可以参考其他人的(这个有点花费时间,大家提前有个心理准备 - _-) 一.第一步 ...

  4. 13个可实现超棒数据可视化效果的Javascript框架

    随着商业及其相关需求的发展,数据成为越来越重要的元素之一,为了更加直观和明显的展示商业潜在的趋势和内在的特性,我们需要使用图表和图形的方式来直观动态的展示数据内在秘密,在今天的这篇文章中我们推荐12款 ...

  5. vue-router 懒加载优化

    一.路由懒加载 1.先安装 babel 动态引入插件 npm install --save-dev babel-plugin-syntax-dynamic-import 2.修改router/inde ...

  6. python中的exec()、eval()以及complie()

    参考博客:http://www.cnblogs.com/yyds/p/6276746.html 1.eval函数 函数的作用: 计算指定表达式的值.也就是说它要执行的python代码只能是单个表达式( ...

  7. 关于帝国CMS迁移到新服务器上出现问题的处理办法

    在帝国CMS项目整体迁移过程中,或多或少总会出点幺蛾子,以下就常见的注意事项整理一下: 一.修改 e/config/config.php中的数据库相关配置 二.让项目文件位置具有读写权限 三.设置ph ...

  8. Andriod中的依赖注入

    Web后端开发者应该对依赖注入都比较熟悉,至于Android又是如何进行依赖注入的呢?在这篇文章中,让我们一起通过一个例子了解一下在Android中进行依赖注入的好处. AndroidAnnotati ...

  9. 修改上一篇文章的node.js代码,支持调用自定义页面

    上一篇文章所有请求只能调用index.html,现在做个改造,允许调用自定义页面 服务端 app.js var app = require('http').createServer(handler) ...

  10. 互斥锁属性PTHREAD_MUTEX_RECURSIVE

    四.互斥锁属性 线程和线程的同步对象(互斥量,读写锁,条件变量)都具有属性.在修改属性前都需要对该结构进行初始化.使用后要把该结构回收.我们用pthread_ mutexattr_init函数对pth ...