zoukankan      html  css  js  c++  java
  • 条件循环语句组成了Python代码的骨架

    条件控制

    我们都知道流程图是有多个分支的,程序中也是如此,在Python中是用if语句来判断程序该走哪个分支的。它的执行过程如下:

    代码执行过程如下:

    if

    if语句的一般形式如下:

    if condition_1:
        statement_block_1
    
    • 如果condition_1为True,执行statement_block_1。

    condition_1是条件表达式,由各种运算符和数据类型组成,条件表达式的结果可以是True/False的布尔值,也可以是非布尔值。Python中的0、None、空列表、空字典等都会被认为是False,反之都会被认为是True。

    else

    else语句在条件为False时执行:

    if condition_1:
        statement_block_1
    else:
        statement_block_2
    
    • 如果condition_1为True,执行statement_block_1。
    • 如果condition_1为False,执行statement_block_2。

    elif

    if...else实现了“如果满足条件,那么xxx,否则xxx”,除此之外,还可以用elif实现多个连续判断,分别执行不同的语句:

    if condition_1:
        statement_block_1
    elif condition_2:
        statement_block_2
    else:
        statement_block_3
    
    • 如果condition_1为True,执行statement_block_1。
    • 如果condition_1为False,再判断,如果condition_2为True,执行statement_block_2。
    • 否则,执行statement_block_3。

    elif可以写多个。这种写法的执行顺序是从上往下,只要满足了某个ifelif的条件,就会在当前分支执行后跳出去,不再执行后面的判断,如果每个ifelif的条件都是False,最后就会执行else

    if嵌套

    假如想满足ifelif的条件后,继续做判断,那么就需要进行if语句嵌套,让statement_block_1等代码块也包含if语句:

    if 表达式1:
        语句
        if 表达式2:
            语句
        elif 表达式3:
            语句
        else:
            语句
    elif 表达式4:
        语句
    else:
        语句
    

    示例:

    num=int(input("输入一个数字:"))
    if num%2==0:
        if num%3==0:
            print("你输入的数字可以整除 2 和 3")
        else:
            print("你输入的数字可以整除 2,但不能整除 3")
    else:
        if num%3==0:
            print("你输入的数字可以整除 3,但不能整除 2")
        else:
            print  ("你输入的数字不能整除 2 和 3")
    

    循环语句

    条件语句是从上往下流水式单次执行,循环语句和条件语句的不同点在于,循环是可以回到起始点,反复执行多次的,它的执行过程如下:

    while

    循环语句的一种形式是while语句:

    while 判断条件(condition):
        执行语句(statements)……
    

    它的执行流程图如下:

    示例:

    n = 100
     
    sum = 0
    counter = 1
    while counter <= n:
        sum = sum + counter
        counter += 1
     
    print("1 到 %d 之和为: %d" % (n,sum))  # 5050
    

    for

    循环语句的另一种形式是for语句:

    for <variable> in <sequence>:
        <statements>
    else:
        <statements>
    

    它的执行流程图如下:

    示例:

    languages = ["C", "C++", "Perl", "Python"]
    for x in languages:
        print(x)
    

    break

    break用来跳出整个循环,它的执行流程图如下:

    示例:

    for letter in 'Runoob':     # 第一个实例
       if letter == 'b':
          break
       print ('当前字母为 :', letter)
      
    var = 10                    # 第二个实例
    while var > 0:              
       print ('当期变量值为 :', var)
       var = var -1
       if var == 5:
          break
     
    print ("Good bye!")
    

    continue

    break用来跳出整个循环,continue则是用来跳过当前循环,回到起点,继续下一次循环。它的执行流程图如下:

    示例:

    for letter in 'Runoob':     # 第一个实例
       if letter == 'o':        # 字母为 o 时跳过输出
          continue
       print ('当前字母 :', letter)
     
    var = 10                    # 第二个实例
    while var > 0:              
       var = var -1
       if var == 5:             # 变量为 5 时跳过输出
          continue
       print ('当前变量值 :', var)
    print ("Good bye!")
    

    break和continue在while循环和for循环中的代码执行过程如下:


    循环else

    循环后面可以加else语句,while...elsefor...else。咋看一下else好像并没有什么用,因为while循环条件为False或for循环结束后,一定会执行接下来的语句。但是如果循环中出现了break,当循环从break跳出来后,是不会执行else语句的。例如:

    for n in range(2, 10):
        for x in range(2, n):
            if n % x == 0:
                print(n, '等于', x, '*', n//x)
                break
        else:
            # 循环中没有找到元素
            print(n, ' 是质数')
    

    range()函数可以生成数字序列。

    无限循环

    通过设置while循环条件始终为True,可以让循环一直进行下去,例如:

    while True:
        pass
    

    pass是占位语句,不执行任何操作。

    无限循环是很有用的,比如定时任务,每隔5分钟收1次邮件:

    import time
    
    while True:
        receive_email()
        time.sleep(300)
        
    

    还有比如客户端和服务器保持连接的心跳机制等。

    小结

    本文介绍了条件控制和循环语句,也就是写Python常用的ifwhilefor语句,同时也讲解了附带语句elifelsebreakcontinuepass的使用。同时也包括了if嵌套、循环else、无限循环的知识点。这一部分的知识非常重要,是代码的骨架,除了看文章,学代码最好的方式是实际敲代码。我们建了一个“Python互助讨论群”,每周日会有算法刷题打卡活动(照着答案敲一遍也ok),公众号后台回复“加群”即可加入,有兴趣的同学可以一起来相互学习交流呀。

    参考资料:

    https://www.runoob.com/python3/python3-conditional-statements.html

    https://www.runoob.com/python3/python3-loop.html

  • 相关阅读:
    TinyXML 2.4.2发布
    OpenAL 1.1 Release
    Microsoft ship Visual Studio 2005 and .NET 2.0
    Boost中文站
    第一次Blog
    POJ3020 Antenna Placement 二分图匹配+拆点构图
    SGU438 The Glorious Karlutka River =) 最大流(动态流问题)
    HDU2732 Leapin' Lizards 最大流
    SGU176 Flow construction 有上下界的最小流
    POJ1459 Power Network 网络流
  • 原文地址:https://www.cnblogs.com/df888/p/14107867.html
Copyright © 2011-2022 走看看