• Python基础——条件判断


      Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ

      到目前为止,Python基础系列的文章中的程序都是一条一条语句顺序执行的。在本章中,我会重点介绍让程序选择是否执行语句块的方法。

      Python程序为什么可以实现自我选择的功能呢?因为它可以根据条件进行判断是否执行下面的语句块。

      Python基础——数据类型中讲到的布尔值就与条件判断有着必然的联系。

    条件判断

     1.1 语句块

      什么是语句块呢?

      语句块是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语句。在代码前放置空格来缩进语句即可创建语句块。

      关于缩进:

        使用tab键也可以缩进语句块。Python将一个tab字符解释为到下一个tab字符位置的移动,而一个tab字符位置为8个空格,但是标准且推荐的方式是只用空格,尤其是在每个缩进需要4个空格的时候。

      在Python中,英文版冒号(:)用来标识语句块的开始,块中的每一个语句都是缩进的(缩进量相同)。当回退到和已经已经闭合的块一样的缩进量时,就表示当前块已经结束了(这个不用担心,很多程序编辑器和集成开发环境都知道如何缩进语句块,可以帮助用户轻松把握缩进)!!!

     1.2 条件和条件语句

      传说中的if语句就要闪亮登场啦~~~

      使用条件语句不要少写了冒号(:),而且必须是英文版本的。

      1. if语句

      对于if语句,若条件判定为真,那么后面的语句块就会被执行。若条件判定为假,语句块就会被跳过,不会执行。

    1 #if语句
    2 age = 20
    3 if age >= 18:
    4     print('your age is', age)
    5     print('adult')

      2. else语句

      else子句只是增加一种选择(之所以叫做子句是因为它不是独立的语句,而是if的一部分)。if...else...搭配,若if语句为False,不执行if下的语句块,而去else下的语句块。

    1 #if...else...语句
    2 age = 3
    3 if age >= 18:
    4     print('your age is', age)
    5     print('adult')
    6 else:
    7     print('your age is', age)
    8     print('teenager')

      3. elif语句

      如果需要检查多个条件,就可以使用elif,它是else if的简写,也是if和else语句的联合使用,即使用elif做更细致的判断:

    1 #if...elif...elif...else...语句
    2 age = 3
    3 if age >= 18:
    4     print('adult')
    5 elif age >= 6:
    6     print('teenager')
    7 else:
    8     print('kid')

      4. 条件语句总结

    if <条件判断1>:
        <执行1>
    elif <条件判断2>:
        <执行2>
    elif <条件判断3>:
        <执行3>
    else:
        <执行4>

      5. 注意点

      if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elifelse语句,所以,请测试并解释为什么下面的程序打印的是teenager:

    1 #条件语句执行特点:从上往下判断
    2 age = 20
    3 if age >= 6:
    4     print('teenager')
    5 elif age >= 18:
    6     print('adult')
    7 else:
    8     print('kid')

      6. input()运用

      最后看一个有问题的条件判断。很多同学会用input()读取用户的输入,这样可以自己输入,程序运行得更有意思,更有人性化。其实啊,Error往往出现在意想不到的地方。不信,来看段代码:

    #if语句中使用input()方法
    birth = input('birth: ')
    if birth < 2000:
        print('00前')
    else:
        print('00后')

      输入1993,结果报错:

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unorderable types: str() > int()

      为什么呢?我在刚接触Python时,用到此处报错也是百思不得其解,同样纠结了好久。直到后来,我才慢慢懂了。

      关于input(),我在随笔《Python基础——输出[print()]与输入[input()]》中已经讲得比较详细了。

      这是因为input()返回的数据类型是strstr不能直接和整数比较,必须先把str转换成整数。Python提供了int()函数来完成这件事情。

    s = input('birth: ')
    birth = int(s)
    if birth < 2000:
        print('00前')
    else:
        print('00后')

      因此,在编程中,条件判断是非常重要的。条件判断可以让计算机自己做选择,Python的if...elif...else很灵活。条件判断从上向下匹配,当满足条件时执行对应的块内语句,后续的elif和else都不再执行。

    1.3 条件运算符

      条件判断,if语句重在判断并选择是否执行,而没有过多涉及条件本身。

      下面是Python中常见的条件运算符:

    Python中的条件运算符
    表达式 描述
    x == y x 等于 y
    x < y x 小于 y
    x > y x 大于 y
    x >= y x 大于等于 y
    x <= y x 小于等于 y
    x != y x 不等于 y
    x is y x和y是同一个对象
    x is not y x和y不是同一对象
    x in y x是y容器的成员
    x not in y x不是y容器的成员

      在Python中,比较运算和赋值运算是可以连接的——几个运算符可以连在一起使用,比如: 0 < age <120

      有些运算符值得特别关注:

      一、相等运算符

      如果想要知道两个内容是否相等,你应该使用相等运算符,即两个等号==。请务必记得是两个等号!!!单个等号可是赋值啊~~~

    1 #相等运算符==
    2 >>>"python" == "python"
    3 True
    4 >>>"Python" == "python"
    5 False
    6 >>>"python" = "python"
    7   File "<stdin>", line 1
    8 SyntaxError: can't assign to literal
    9 #很明显,单个相等运算符是赋值运算符,是用来改变值的,而不能用来比较

      二、is:同一性运算符

      这个定义很不友好,什么是同一性?首次接触真是云里雾里啊,真正理解is运算符才知道同一性的真谛。

      乍一看,is运算符和==一样,事实上却不同。

      示例代码如下:

     1 #同一性运算符:is
     2 #is和==之间的差异
     3 >>>x = y = [1,2,3]
     4 >>>z = [1,2,3]
     5 >>>x == y
     6 True
     7 >>>x == z
     8 True
     9 >>>x is y
    10 True
    11 >>>y is x
    12 True
    13 >>>x is z
    14 False
    15 >>>z is x
    16 False

      注:==运算符比较两个对象是否相等,is判定两者是否等同(同一个对象)

      三、in:成员资格运算符

      四、布尔运算符:and、or和not

      五、短路逻辑

      短路???条件表达式中的布尔运算符就有这个特性。什么是短路逻辑呢?如下所示:

      条件表达式:a and b,该表达式何时返回True呢?即a与b同时为真,若a判定为False,则无论b是真是假,该表达式都为为False。

      事实上,如果x为假,条件表达式会返回x的值,否则返回y的值。这种行为被称为短路逻辑。而短路逻辑同样适用于or运算符。

    小结

      1. 等号运算符:==,单个等号=为赋值运算符;

      2. Python的条件判断if...elif...else很灵活;

      3. 条件判断从上向下匹配;

      4. 短路逻辑适用于布尔运算符(and,or)。

  • 相关阅读:
    《java异常的一些总结》
    《java小应用程序(Applet)和java应用程序(Application)分别编写的简单计算器》
    《Java应用程序(Application)》
    CPU 内部 MOSFET 晶体管模型
    Intel 4004,世界上第一块 CPU
    VBScript
    VBScript
    Web Scraping(网页抓取)基本原理
    VBScript
    莎士比亚电路ヾ(≧▽≦*)o
  • 原文地址:https://www.cnblogs.com/SmallWZQ/p/8473455.html
Copyright © 2020-2023  润新知