python个人学习笔记(4)——if语句

if语句

  • 一个简单示例

    cars = ['audi','bmw','subaru','toyota']
    for car incars:
      if car == 'bmw':
          print(car.upper())
      else:
          print(car.title())
    

    运行结果:
    Audi
    BMW
    Subaru
    Toyota

  • 条件测试:
    每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试。Python根据条件测试的值为True还是False来决定是否执行if语句中的代码。如果条件测试值为True,Python执行紧跟在if语句后面的代码;如果条件测试值为False,python就忽略这些代码!

    • 检查是否相等
      大多数条件测试都将一个变量的当前值同特定值进行比较。
      最简单的条件测试检查变量的值是否与特定值相等
      "=“赋值号;”=="等号
    >>> car = 'bmw'
    >>> car == 'bmw'
    #交互式编程方式;另一种是文件式,比较常用
    

    运行结果:
    True

    • 检查是否相等时不考虑大小写
      在Python中检查是否相等时区分大小写,两个大小写不相等的值会被视为不相等,如果大小写很重要,那么这种行为有其优点,但如果大小写无关紧要,而只想检查变量的值时,可:
      • 使用lower()将变量的值转换成小写再进行比较
      • 使用upper()将变量的值转换成大写再进行比较
        两种方法原理相同,可根据个人喜好选择
        同时,两种方法不会对变量的值进行修改,所以不必担心这个问题
      message = "pythoN"
      if message.lower() == 'python':
        print("使用函数lower()的结果")
        print(message)
      if message.upper() == 'PYTHON'
        print("使用函数upper()的结果")
        print(message)
      
      运行结果:
      使用函数lower()的结果
      pythoN
      使用函数upper()的结果
      pythoN
      • 检查是否不相等
        使用符号"!="
      >>>'Lee' != 'john'
      
      运行结果:
      True
    • 比较数字
      在if语句中可使用各种数学比较
    >>>age = 19
    >>>age < 21
    >>>age <= 21
    >>>age > 21
    >>>age >= 21
    

    运行结果:
    True
    True
    False
    False

    • 检查多个条件
      • 使用and检查多个条件
        关键字and可将两个条件测试合二为一,两个表达式都通过了,整个表达式才为True,如果至少有一个表达式结果为False,整个表达式为False
      • 使用or检查多个条件
        关键字or也能同时检查多个条件,但只要至少有一个条件满足,就能通过整个测试。仅当两个测试都没有通过时,使用or的表达式才为False
    • 检查特定值是否包含在列表中
    >>>names = ['Lee','John','Tom','Tony','Amy']
    >>>'Amy' in names
    >>>'Lily' in names
    

    运行结果:
    True
    False

    • 检查特定值是否不包含在列表中
      事实上,我认为和上面的知识点重叠了。但,在我认为:这可以作为第二种方法。多一种方法总是好的。
    >>>names = ['Lee','John','Tom','Tony','Amy']
    >>>'Amy' not in names
    >>>'Lily' not in names
    

    运行结果:
    False
    True

    • 布尔表达式
      随着对编程的了解越来越深入,将遇到术语布尔表达式,它不过是条件测试的别名,与条件表达式一样,布尔表达式的结果要么为True,要么为False。
      布尔通常用来记录条件,如游戏是否正常运行,或用户是否可以编辑网站的特定内容:
    game_active = True
    can_edit = False
    

    在跟踪程序状态或程序中重要的条件方面,布尔值提供了一种高效的方式。

  • if语句

    • 最简单的if语句:
      if conditional_test:
      do something
    • if-else语句
      if语句类似于简单的if语句,但其中的else语句让你能够指定条件测试未通过时要执行的操作
    names = ['Lee','John','Lily']
    if 'Amy' in names:
      print("Amy in names")
    else:
      print("Amy not in names")
    

    运行结果:
    Amy not in names

    • if-elif-else语句
      经常出现要检查超过两个的情形,为此可使用Python的if-elif-else结构,如下是一个根据年龄段收费的门票问题:
      1: 4岁以下免费
      2: 4~18岁收费5美元
      3: 18岁(含18岁)以上收费10美元
    age = 12
    if age < 4 :
      price = 0
    elif age >= 4 and age < 18:
      price = 5
    else:
      price = 10
    print("Your admission cost is $"+str(price)+".")
    

    运行结果:
    Your admission cost is $5.

    • 使用多个elif代码块
      对上面的例子做一些修改:
      65岁(含65岁)以上收费3美元
    age = 68
    if age < 4 :
      price = 0
    elif age < 18:
      price = 5
    elif age >=65 :
      price = 3
    else:
      price = 10
    print("Your admission cost is $"+str(price)+".")
    

    运行结果:
    Your admission cost is $3.

    • 省略else代码块
      Python并不要求if-elif结构后面必须有else代码块。有些情况下,else代码块很有用;而在其他一些情况下,使用一条elif语句来处理特定的情形更清晰:
      上面的代码可改写为:
    age = 68
    if age < 4 :
      price = 0
    elif age < 18:
      price = 5
    elif age < 65 :
      price = 3
    elif age >= 65:
      price = 10
    print("Your admission cost is $"+str(price)+".")
    

    else是一条包罗万象的语句,只要不满足任何if或elif的条件测试,其中的代码就会执行,这可能会引入无效甚至恶意的数据。如果知道最终要测试的条件,应考虑使用一个elif代码块来代替else代码块。这样,你可以肯定,仅当满足相应条件时,你的代码才会执行。

    • 测试多个条件
      if-elif-else结构功能强大,但仅适合用于只有一个条件满足的情况:遇到了通过了的测试,Python就会跳过余下的测试。这种行为很好,效率很高,让你能测试一个特定的条件。
      然而,有时候需要检查多个条件。这种情况下应使用一系列不带elif和else语句的简单if语句。在可能有多个条件为True,且你需要在每个条件为True时都采用相应的措施时,适合使用这种方法。
      例如:
    names = ['Lee','John','Lily']
    print('if-elif-else结构的结果')
    if 'Lee' in names:
      print('Lee in names.')
    elif 'John' in names:
      print('John in names.')
    elif 'Lily' in names:
      print('Lily in names.')
    print('一系列简单if语句的结果')
    if 'Lee' in names:
      print('Lee in names.')
    if 'John' in names:
      print('John in names.')
    if 'Lily' in names:
      print('Lily in names.')
    

    运行结果:
    if-elif-else结构的结果
    Lee in names.
    一系列简单if语句的结果
    Lee in names.
    John in names.
    Lily in names.
    二者的区别显而易见!
    总之,如果你只想执行一个代码块,就使用if-elif-else结构;如果要运行多个代码块,就使用一系列独立的if语句。

  • 使用if语句处理列表
    通过结合使用if语句和列表,可完成一些有趣的任务:对列表特定的值做特殊处理;高效管理不断变化的情形;证明代码在各种情形下都将按预期那样进行。

    • 检查特殊元素
      比如说大家计划一起去玩,要知道有多少个人参加,可以这样写:
    participants = ['Lee','Tom','Tony','Lili']
    print('Who will participate our activity?')
    for participant in participants:
      print(participant)
    

    运行结果:
    Who will participate our activity?
    Lee
    Tom
    Tony
    Lili

    • 检测列表是不是空的
      在if语句中将列表名用于条件表达式中时,Python将列表中至少含有一个元素时返回True,并在列表为空时返回False。
    names = []
    if names :
      print(names)
    else :
      print('without name in names!')
    

    运行结果:
    without name in names!

    • 使用多个列表
      列表是由一系列按特定顺序排列的元素组成。但有时候,我们需要表达的东西比较多,一个列表不足以满足我们的需求,这个时候就要同时使用多个列表来实现我们想要的操作。
    names = ['Lee','Tony','Amy']
    subjects = ['math','English','Chinese']
    for i in range(3):
      print(names[i]+' likes '+subjects[i]+'.')
    

    运行结果:
    Lee likes math.
    Tony likes English.
    Amy likes Chinese.

  • 设置if语句的格式
    在条件测试的格式设置方面,PEP8提供了唯一建议是,在诸如==、>=和<=等运算符两边各添加一个空格。这样的空格不会影响Python对代码的解读,而只是让代码阅读起来更容易。

个人从书本学到的知识,作为自己学习笔记的同时,与各位朋友分享,如有不足,请多多指教

参考文献:《Python编程从入门到实践》【美】Eric Matthes 著 袁国忠 译

你可能感兴趣的:(Python个人学习笔记,python,编程语言)