zoukankan      html  css  js  c++  java
  • Python 极简教程(十二)逻辑控制语句 if else

    计算机软件之所以能够对不同的情况进行不同的处理,就是我们在编码的时候,通过逻辑控制语句,告诉软件在不同的情况下应该做什么处理。
    比如我们在登录的时候,那么当你输入正确的账号密码和错误的账号密码,完全是两种处理方式。
    逻辑判断
    这就是我们常说的逻辑分支,中间的菱形表示逻辑条件判断,当满足不同的条件的情况下,程序会走不同的分支。

    那么在计算机语言中,怎么决定条件的走向呢?那么主要用到我们常用的来逻辑相关的运算符,包括比较运算符、逻辑运算符和成员运算符。详情请见 运算符 小节。
    也就是所有运算结果为 True 或 Flase 这类布尔值的 表达式函数方法等,都可以作为逻辑判断中的条件。

    单条件的逻辑判断语句

    在 Python 中,一条完整的逻辑判断语句,除了表达式之外,还需要用到几个关键字if...else...。这几个关键字都很好理解如果..否则...如果条件成立,执行什么语句,否则执行另外的什么语句。用伪代码表示如下:

    if 条件:
      如果条件成立(结果为True),执行这里的语句块
    else:
      如果条件不成立(结果为False),执行这里的语句块
    

    注意缩进
    到目前为止,我们写的语句都是逐行执行。但是从现在开始,就涉及到缩进的概念了。此时建议大家使用 Pycharm 等编码工具,将会更容易处理缩进。
    Python 中,用同一缩进来表示同一层级的语句体。如果缩进不同,则表示内部语句的意思。
    在 if...else... 语句中,if 下面的缩进表示这些语句从属于 if 语句,属于包含在 if 语句中的子语句。在其他语言中,一般用大括号表示。
    Python 中使用缩进来标识语句块,虽然很优雅,初学者却容易混淆。不过并不用太过担心,多写写自然就熟悉了。

    我们用代码模拟实现上面图中的登录过程:

    user = input('请输入密码:')
    pwd = input('请输入密码:')
    if user == 'admin' and pwd == '123':
        print('登录成功')
    else:
        print('登录失败')
    

    运行上面的程序,当你输入的账号为admin并且密码为123的时候,会打印登录成功,否则打印登录失败
    我们看到,上面的语句执行后,要么打印登录成功,要么打印登录失败。也就是说 if...else... 中 if 和 else 所包含的语句,只会执行一次,要么执行 if 中的,要么执行 else 中的,不会两块都执行。

    多条件的逻辑判断语句

    上面 if...else... 只能执行一个条件的情况,但是在很多时候,我们可能会有很多的条件。那么对于多条件的判断情况,我们需要怎么处理呢?Python 中提供了elif的关键字。

    # 看一个例子:
    # 输入一个成绩
    # 当成绩大于80打印优秀
    # 60-80之间打印及格
    # 60以下打印不及格
    score = int(input('请输入一个成绩:'))
    if score >= 80:
        print('优秀')
    elif score >= 60:
        print('及格')
    else:
        print('不及格')
    # 最后的 else 也可以替换为 elif score < 60
    

    在这里,我们看到多个条件的情况,但是要注意,虽然我们写了这么多的语句,但是在整个 if...elif...else...语句体中,只会有一块语句被执行。

    if...elif...else...,这就是 if 的完全体了,这一整套的语句块,可以叫做 Python 中的 if 语句。在 Python 的 if 语句中,if 关键字只能出现一次,出现多次表示是多个 if 语句了;elif 可以没有也可以有无数多个(0 到 n);else 用来表示当所有条件不成立的情况,可以没有,有的话只能有一个(0 或 1)

    if 条件1:
      如果条件1成立,执行这里的语句
    elif 条件2:  # 如果条件1不成立,那么进行条件2的判断
      如果条件2成立,执行这里的语句
    else:
      如果上面的条件全部都不成立,执行这里的语句
    

    单变量的条件

    if 语句中除了用逻辑表达式来表示条件外,还有一种情况可以用来表示条件。那就是变量是否存在有效的值,如果有有效的值,则表示 True,否则表示 False。看下面的例子:

    >>> a = 0
    >>> if a:
    	print('a 具备有效值')      # 不用打印任何内容,因为 if a, 此时条件不成立
    >>> b = 15
    >>> if b:
    	print('b 具备有效值')
    b 具备有效值      # b 不等于 0,if b,此时条件成立
    

    除此外,当变量单独作为条件时,为 False 的情况如下,其他情况都为 True

    类型 为 False 的情况
    int 当变量值为 0
    str 当变量值为 '' 空字符串时,注意这里是空字符串,不是带空格的字符串
    list 当变量值为 [] 空列表
    tuple 当变量值为 () 空元组
    dict 当变量值为 {} 空字典
    set 当变量值为 set() 空集合
    None 当变量值为 None

    除了表中所列的情况,当变量值为其他值时,则表示条件成立。

    逻辑判断语句的概念比较简单,但是用的时候,要注意条件如何确定,不同条件下执行什么语句。可以先用中文的形式写出伪代码,再转换为代码。

    比如这样一个练习:

    输入一个整数,如果此数为0,则输出”石头”,如果此数为1,则输出“剪刀”,如果此数为2,则输出“布”,如果为其它,则输出“错误”。
    可以先用伪代码写出思路:

    输入一个变量 num
    把 num 转换为 int
    如果 num 为 0:
      输出石头
    如果 num 为 1:
      输出剪刀
    如果 num 为 2:
      输出布
    以上条件都不成立时:
      输出错误
    

    通过伪代码,理出思路,然后再转换为代码就容易多了。不要一上来就立马写代码,先理思路最重要。否则,遇到逻辑复杂的时候,会越绕越晕。切记切记!!!

    本节练习:(题目来源部分网络收集)

    1. 输入一个int型的数据,判断这个数是否能被2整除,如果能被2整除,那么输出“这个数是偶数”,否则输出“这个数是奇数”。
    2. 输入一个年份,判是闰年还是平年(能整除4、400,不能整除100)。举例:1000不是闰年,2000是一个闰年,1996年是闰年,1998不是。
    3. 现在有一个银行保险柜,有两道密码。 想拿到里面的钱必须两次输入的密码都要正确。 如果第一道密码都不正确,那直接把你拦在外面; 如果第一道密码输入正确,才能有权输入第二道密码。 只有当第二道密码也输入正确,才能拿到钱!
    4. 输入两个整数,放入到a与b变量中去,如果a>=b就将a与b中的值进行交换,否则就不交换。目的就是要让a中放的值总是小于或等于b中的数,输出。
    5. 输入三个int型的数据,放入到a,b,c三个变量中去,使用条件结构与交换逻辑将这三个变量中的值从小到大排列。
    6. 输入一个三位整数,判断其是不是降序数如: 531是降序数 百位>十位>个位。

    下面是一个小游戏设计,你可以继续写下去:
    游戏

    # 游戏角色属性
    roles = ['游侠', '剑客']
    role = ''
    money = 100         # 初始金钱
    prestige = 0        # 江湖威望
    hp = 100   # 初始血量
    atk = 10   # 初始攻击
    
    i = input('请选择你的角色:
    1. 游侠
    2. 剑客
    ')
    if i == '1':
        print('你成为了一名游侠!')
        role = roles[0]
    elif i == '2':
        print('你成为了一名剑客!')
        role = roles[1]
    else:
        print('没有你要选择的职业!默认为你选择了游侠!')
        role = roles[0]
    i = input('现在你进入了江湖,请选择你的下一步行动:
    1.出门左拐
    2.出门右拐')
    if i == '1':
        j = input('前面出现了一幕不好的场景,疑似地主家的傻儿子带着一帮狗腿子在调戏良家妇女,你打算?
    1.英雄救美
    2.装作没看见')
        if j == '1':
            print('你上前打跑了地主傻儿子和狗腿子,但是由于对方人多,你也受了伤!')
            prestige += 1  # 江湖威望 +1
            hp -= 5 # 血量 -5
        elif j == '2':
            print('你选择装作什么都没看见。由于你的懦弱,严重打击了你江湖行走的信心!')
            prestige -= 2
    elif i == '2':
        ...
    

    本节练习答案
    请先做完练习,并理解后再看下一篇!

  • 相关阅读:
    python格式化输出之format用法
    Mybatis插入数据返回主键
    DBC 和 Mybatis连接mysql数据库的时候,设置字符集编码
    工具列表
    Idea的Git如何回退到上一个版本
    mybatis-plus id主键生成的坑
    JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC 一条龙!
    DDD-快速hold住业务的利器
    深入理解ThreadLocal的原理和内存泄漏问题
    VUE开发--环境配置
  • 原文地址:https://www.cnblogs.com/zmll/p/10611249.html
Copyright © 2011-2022 走看看