zoukankan      html  css  js  c++  java
  • Python 死循环和嵌套循环

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

    死循环的使用:死循环并非一无是处,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同一行。这种结构被称为循环出口。

    #后测循环代码1
    在前面的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")
    在上面这段代码中,合法性检验重复了两次。

    #后测循环代码2
    限定合法性检验只判断一次,需为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语句。因为当循环有多个出口的时候,程序逻辑就显得不够清晰了。
  • 相关阅读:
    Compression algorithm (deflate)
    tcpip数据包编码解析(chunk and gzip)_space of Jialy_百度空间
    What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
    gzip压缩算法: gzip 所使用压缩算法的基本原理
    Decompressing a GZip Stream with Zlib
    Frequently Asked Questions about zlib
    how to decompress gzip stream with zlib
    自己动手写web服务器四(web服务器是如何通过压缩数据,web服务器的gzip模块的实现)
    What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
    C语言抓http gzip包并解压 失败 C/C++ ChinaUnix.net
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/8452002.html
Copyright © 2011-2022 走看看