zoukankan      html  css  js  c++  java
  • Python:流程控制

    blog:https://www.cnblogs.com/Rohn

    Tips:本文中代码均使用3.8.x版本的Python。

    部分文字和图片源自网络,侵删。

    关于流程控制

    Python 同样提供了现代编程语言都支持的两种基本流程控制结构,分支结构和循环结构:

    • 分支结构用于实现根据条件来选择性地执行某段代码;
    • 循环结构用于实现根据循环条件重复执行某段代码;

    Python使用if语句提供分支支持,提供了whilefor-in循环,也提供了breakcontinue控制程序的循环结构。

    在学习流程控制前,需要了解布尔、比较操作符等知识。

    布尔值

    虽然整型、浮点型和字符串数据类型有无数种可能的值,但“布尔”数据类型只有两种值:TrueFalse。Boolean(布尔)的首字母大写, 因为这个数据类型是根据数学家George Boole命名的。在作为Python代码输入时,布尔值TrueFalse不像字符串,两边没有引号,它们总是以大写字母TF开头, 后面的字母小写。

    例如:

    >>> 2==2
    True
    >>> a=true
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'true' is not defined
    >>> a=True
    >>> a
    True
    

    比较操作符

    比较操作符比较两个值,求值为一个布尔值。

    以下是操作符及其含义,这些操作符根据给它们提供的值,求值为TrueFalse

    操作符 含义
    == 等于
    != 不等于
    < 小于
    > 大于
    <= 小于等于
    >= 大于等于

    Tips:整型或浮点型的值永远不会与字符串相等。<><=>=操作符仅用于整型和浮点型值。

    例如:

    >>> 33 == 33
    True
    >>> 33 != 33
    False
    >>> 33 != 34
    True
    >>> 33 < 34
    True
    >>> 33 > 34
    False
    >>> 33 > 32
    True
    

    布尔操作符

    3 个布尔操作符(andornot)用于比较布尔值。

    二元布尔操作符

    andor操作符总是接受两个布尔值(或表达式),所以它们被认为是元操作符。如果两个布尔值都为Trueand操作符就将表达式求值为True,否则求值
    False

    操作符and的真值表

    表达式 求值为
    True and True True
    True and False False
    False and True False
    False and False False

    or操作符的真值表

    表达式 求值为
    True or True True
    True or False True
    False or True True
    False or False False

    not操作符

    not操作符只作用于一个布尔值(或表达式)。not操作符求值为相反的布尔值。

    not操作符的真值表

    表达式 求值为
    not True False
    not False True

    混合布尔和比较操作符

    既然比较操作符求值为布尔值,就可以和布尔操作符一起,在表达式中使用。

    例如:

    >>> (2 < 3) and (22 > 1)
    True
    >>> (2 > 3) and (22 > 1)
    False
    >>> (1 == 2) or (3 == 3)
    True
    

    Tips:和算术操作符一样,布尔操作符也有操作顺序。在所有算术和比较操作符求值后,Python先求值not操作符,然后是and操作符,然后是or操作符。

    控制流的元素

    控制流语句的开始部分通常是条件,接下来是一个代码块,称为子句

    条件

    你前面看到的布尔表达式可以看成是条件,它和表达式是一回事。条件只是在控制流语句的上下文中更具体的名称。条件总是求值为一个布尔值,TrueFalse。控制流语句根据条件是 True 还是 False,来决定做什么。 几乎所有的控制流语句都使用条件。

    代码块

    一些代码行可以作为一组, 放在代码块 中。 可以根据代码行的缩进,知道代码块的开始和结束。代码块有 3 条规则:

    • 缩进增加时, 代码块开始;
    • 代码块可以包含其他代码块;
    • 缩进减少为零,或减少为外面包围代码块的缩进,代码块就结束了;

    if语句

    选择(条件)语句可细分为3种形式,分别是if语句、if-else语句和if-elif-else语句。

    if语句

    if 条件表达式:
        代码块
    

    image

    if-else语句

    if 表达式:
        代码块 1
    else:
        代码块 2
    

    image

    if-elif-else语句

    if 表达式 1:
        代码块 1
    elif 表达式 2:
        代码块 2
    elif 表达式 3:
        代码块 3
    ...
    else:
        代码块 n
    

    image

    练习

    英制单位英寸与公制单位厘米互换

    value = float(input('请输入长度: '))
    unit = input('请输入单位: ')
    if unit == 'in' or unit == '英寸':
        print('%f英寸 = %f厘米' % (value, value * 2.54))
    elif unit == 'cm' or unit == '厘米':
        print('%f厘米 = %f英寸' % (value, value / 2.54))
    else:
        print('请输入有效的单位')
    

    百分制成绩转换为等级制成绩。

    要求:如果输入的成绩在90分以上(含90分)输出A;80分-90分(不含90分)输出B;70分-80分(不含80分)输出C;60分-70分(不含70分)输出D;60分以下输出E。

    score = float(input('请输入成绩: '))
    if score >= 90:
        grade = 'A'
    elif score >= 80:
        grade = 'B'
    elif score >= 70:
        grade = 'C'
    elif score >= 60:
        grade = 'D'
    else:
        grade = 'E'
    print('对应的等级是:', grade)
    

    while语句

    利用while语句,可以让一个代码块一遍又一遍的执行。只要while语句的条件为Truewhile子句中的代码就会执行。在代码中,while语句总是包含下面几部分:

    • 关键字;
    • 条件(求值为TrueFalse的表达式);
    • 冒号;
    • 从新行开始,缩进的代码块(称为while子句)。

    语法格式

    语法格式如下:

    while 条件表达式:
        代码块
    

    image

    while循环中,条件总是在每次迭代开始时检查(也就是每次循环执行时)。如果条件为True, 子句就会执行,然后,再次检查条件。当条件第一次为False时,while子句就跳过。

    例如:

    spam = 0
    while spam < 5:
        print('hello world')
        spam += 1
    

    练习

    猜数字游戏

    import random
    
    answer = random.randint(1, 100)
    counter = 0
    while True:
        counter += 1
        number = int(input('请输入: '))
        if number < answer:
            print('大一点')
        elif number > answer:
            print('小一点')
        else:
            print('恭喜你猜对了!')
            break
    print('你总共猜了%d次' % counter)
    if counter > 7:
        print('你的智商余额明显不足')
    

    for语句

    在条件为True时,while循环就会继续循环(这是它的名称的由来)。但如果你想让一个代码块执行固定次数,该怎么办?可以通过for循环语句和range()函数来实现。

    常用于遍历字符串、列表、元组、字典、集合等序列类型,逐个获取序列中的各个元素。

    语法格式

    语法格式如下:

    for 迭代变量 in 字符串|列表|元组|字典|集合:
        代码块
    

    在使用for循环时,最基本的应用就是进行数值循环。比如说,想要实现从1到100的累加,可以执行如下代码:

    print("计算 1+2+...+100 的结果为:")
    # 保存累加结果的变量
    result = 0
    # 逐个获取从 1 到 100 这些值,并做累加操作
    for i in range(101):
        result += i
    print(result)
    

    运行结果如下:

    计算 1+2+...+100 的结果为:
    5050
    

    Tips:range(101)可以用来产生0到100范围的整数,需要注意的是取不到101。

    练习

    1~100之间的偶数求和

    sum = 0
    for x in range(2, 101, 2):
        sum += x
    print(sum)  # Returns '2550'
    

    输入一个正整数判断它是不是素数

    from math import sqrt
    
    num = int(input('请输入一个正整数: '))
    end = int(sqrt(num))
    is_prime = True
    for x in range(2, end + 1):
        if num % x == 0:
            is_prime = False
            break
    if is_prime and num != 1:
        print('%d是素数' % num)
    else:
        print('%d不是素数' % num)
    

    break语句

    有一个捷径,让执行提前跳出while循环子句。如果执行遇到break语句,就会马上退出while循环子句。在代码中,break语句仅包含break关键字。
    break用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到break,系统就将完全结束该循环,开始执行循环之后的代码。

    例如:

    for i in range(0, 10) :
        print("i的值是: ", i)
        if i == 2 :
            # 执行该语句时将结束循环
            break
    

    运行的结果为:

    i的值是:  0
    i的值是:  1
    i的值是:  2
    

    continue语句

    break语句相比,continue语句的作用则没有那么强大,它只能终止本次循环而继续执行下一次循环。

    例如:

    for i in range(0, 3 ) :
        print("i的值是: ", i)
        if i == 1 :
            # 忽略本次循环的剩下语句
            continue
        print("continue后的输出语句")
    

    运行结果如下:

    i的值是:  0
    continue后的输出语句
    i的值是:  1
    i的值是:  2
    continue后的输出语句
    
  • 相关阅读:
    在 Tomcat 8 部署多端口项目
    tar -zxvf jdk-8u144-linux-x64.tar.gz
    linux下删除文件夹的命令
    springboot+mybatis案例
    阿里云主机密码
    查看公钥
    jenkins安装
    redis详解(包含使用场景)
    什么是JSONP?
    在CentOS7上面搭建GitLab服务器
  • 原文地址:https://www.cnblogs.com/Rohn/p/13170524.html
Copyright © 2011-2022 走看看