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

死循环的使用:死循环并非一无是处,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. CentOS 加载/挂载 U盘 (转)

    原文链接:CentOS 加载/挂载 U盘 Linux如何加载(优)U盘 1,以root用户登陆    先加载USB模块 modprobe usb-storage    用fdisk -l 看看U盘的设 ...

  2. C语言:通过指针函数输出二维数组中每个学生的成绩

    // //  main.c //  Pointer_function // //  Created by ma c on 15/8/2. //  Copyright (c) 2015年 bjsxt. ...

  3. Valid Parentheses leetcode java

    题目: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the ...

  4. jQuery的一个关键函数

    jQuery.extend = jQuery.fn.extend = function() { // copy reference to target object var target = argu ...

  5. zypper命令使用示例

    导读 Zypper是OpenSUSE和企业版SUSE中软件包管理器ZYpp的命令行接口. 主要用于:1.管理软件包:zypper可用来安装.删除.更新和查询本地或远程的软件包.2.管理仓库:zyppe ...

  6. (转)Unity3D命令行Build

    转自:http://www.cnblogs.com/gameprogram/archive/2012/05/11/2496303.html 本来是没想用这个命令行Build方式,可惜电脑不知道怎么的就 ...

  7. JavaScript高级程序设计(第3版)学习笔记·第8章——浏览器对象模型BOM

    转自:http://www.shaoqun.com/a/43768.aspx 访问和操作浏览器窗口的模型称为浏览器对象模型BOM(Browser Object Model),但习惯上是把所有针对浏览器 ...

  8. CIF、QCIF

    分辨率: 每个像素的存储方式都是YUV   QQCIF:88*72 QCIF:176*144 CIF:352*288 2CIF:704*288 DCIF:584*384 4CIF:704*576   ...

  9. STL - Unorderedset - 自定义哈希函数

    1. hash工具类 hashval.hpp #ifndef _Core_HashVal_H_ #define _Core_HashVal_H_ #include <functional> ...

  10. STL - 容器 - Map(一)

    MapTest.cpp #include <map> #include <string> #include <iostream> #include <algo ...