• 复习if语句
    • 基本语句结构
    • 拉出来溜溜
    • 一个有趣的赋值—三元操作符

    复习if语句

    看官是否记得,在上一部分的时候,有一讲专门介绍if语句的:从if开始语句的征程。在学习if语句的时候,对python编程的基础知识了解的还不是很多,或许没有做什么太复杂的东西。本讲,要对它进行一番复习,通过复习提高一下。如果此前有的东西忘记了,建议首先回头,看看前面那讲。

    基本语句结构

    1. if 判断条件1:
    2. 执行语句1……
    3. elif 判断条件2:
    4. 执行语句2……
    5. elif 判断条件3:
    6. 执行语句3……
    7. else:
    8. 执行语句4……

    只有当“判断条件”的值是True的时候,才执行下面的执行语句。

    那么,在python中,怎么知道一个判断条件是不是真呢?这个问题我们在眼花缭乱的运算符中已经讲解了一种数据类型:布尔类型。可以通过一个内置函数bool()来判断一个条件的结果True还是False。看看下面的例子,是不是能够理解bool()的判断规则?

    1. >>> bool("")
    2. False
    3. >>> bool(0)
    4. False
    5. >>> bool('none')
    6. True
    7. >>> bool(False)
    8. False
    9. >>> bool("False")
    10. True
    11. >>> bool(True)
    12. True
    13. >>> bool("True")
    14. True
    15. >>> bool(3>4)
    16. False
    17. >>> bool("b">"a")
    18. True
    19. >>> bool(not "")
    20. True
    21. >>> bool(not True)
    22. False

    忘记了怎么办?看下面的语句:

    1. if 忘记:
    2. 复习-->眼花缭乱的运算符一讲

    在执行语句中,其实不一定非要把bool()写上的。如同这样:

    1. >>> x = 9
    2. >>> if bool(x>7): #条件为True则执行下面的
    3. ... print "%d more than 7"%x
    4. ... else:
    5. ... print "%d not more than 7"%x
    6. ...
    7. 9 more than 7
    8. >>> if x>7:
    9. ... print "%d more than 7"%x
    10. ... else:
    11. ... print "%d not more than 7"%x
    12. ...
    13. 9 more than 7

    以上两个写法是等效的,但是,在实际的编程中,我们不用if bool(x>7)的格式,而是使用if x>7的样式,还要特别提醒,如果写成if (x>7),用一个括号把条件表达式括起来,是不是可以呢?可以,但也不是python提倡的。

    1. >>> if (x>7): #不提倡这么写,这不是python风格
    2. ... print "%d more than 7"%x
    3. ...
    4. 9 more than 7

    拉出来溜溜

    平时总有人在不服气的时候说“是骡子是马,拉出来溜溜”,赵本山有一句名言“走两步”。其本质都是说“光说不练是假把式”。今天收到一个朋友的邮件,也询问,在学习python的时候,记不住python的内容。其实不用记,我在前面的课程中已经反复讲过了。但是,在应用中,会越来越熟练。

    下面就做一个练习,要求是:

    1. 接收任何字符和数字的输入
    2. 判断输入的内容,如果不是整数是字符,就告诉给用户;如果是小数,也告诉用户
    3. 如果输入的是整数,判断这个整数是奇数还是偶数,并且告诉给用户

    在这个练习中,显然要对输入的内容进行判断,以下几点需要看官注意:

    • 通过raw_input()得到的输入内容,都是str类型
    • 要判断一个字符串是否是由纯粹数字组成,可以使用str.isdigit()(建议看官查看该内置函数官方文档)

    下面的代码是一个参考:

    1. #! /usr/bin/env python
    2. #coding:utf-8
    3. print "请输入字符串,然后按下回车键:"
    4. user_input = raw_input()
    5. result = user_input.isdigit()
    6. if not result:
    7. print "您输入的不完全是数字"
    8. elif int(user_input)%2==0:
    9. print "您输入的是一个偶数"
    10. elif int(user_input)%2!=0:
    11. print "您输入的是一个奇数"
    12. else:
    13. print "您没有输入什么呢吧"

    特别提醒列为,这个代码不是非常完善的,还有能够修改的地方,看官能否完善之?

    再来一个如何?

    已知一个由整数构成的list,从中跳出奇数和偶数,并且各放在一个list中。

    请看官在看下面的参考代码之前,自己写一写。

    1. #!/usr/bin/env python
    2. #coding:utf-8
    3. import random
    4. numbers = [random.randint(1,100) for i in range(20)] #以list解析的方式得到随机的list
    5. odd = []
    6. even = []
    7. for x in numbers:
    8. if x%2==0:
    9. even.append(x)
    10. else:
    11. odd.append(x)
    12. print numbers
    13. print "odd:",odd
    14. print "even:",even

    用这个例子演示一下if在list解析中的应用。看能不能继续改进一些呢?

    可以将循环的那部分用下面的list解析代替

    1. #!/usr/bin/env python
    2. #coding:utf-8
    3. import random
    4. numbers = [random.randint(1,100) for i in range(20)] #以list解析的方式得到随机的list
    5. odd = [x for x in numbers if x%2!=0]
    6. even = [x for x in numbers if x%2==0]
    7. print numbers
    8. print "odd:",odd
    9. print "even:",even

    一个有趣的赋值—三元操作符

    对赋值,看官应该比较熟悉了吧,如果要复习,请看《赋值,简单也不简单》以及《正规地说一句》的相关内容。

    这里说的有趣赋值是什么样子的呢?请看:

    1. >>> name = "qiwsir" if "laoqi" else "github"
    2. >>> name
    3. 'qiwsir'
    4. >>> name = 'qiwsir' if "" else "python"
    5. >>> name
    6. 'python'
    7. >>> name = "qiwsir" if "github" else ""
    8. >>> name
    9. 'qiwsir'

    总结一下:A = Y if X else Z

    什么意思,结合前面的例子,可以看出:

    • 如果X为真,那么就执行A=Y
    • 如果X为假,就执行A=Z

      x = 2
      y = 8
      a = “python” if x>y else “qiwsir”
      a
      ‘qiwsir’
      b = “python” if x<y else “qiwsir”
      b
      ‘python’

    再看看上面的例子,是不是这样执行呢?

    if语句似乎简单,但是在编程时间中常用到。勤加练习吧。