6·模块二:控制流与循环入门

条件判断(if-elif-else)

if-statementconditional

Python 编程:从零基础到精通

第 6 课 - 条件判断(if-elif-else)

所属模块:模块二:控制流与循环 难度: beginner 标签: if-statement, conditional

学习目标

完成本课学习后,你将能够:

  1. 理解并编写使用 if 语句的基本条件判断结构。
  2. 掌握比较运算符(==, !=, >, <, >=, <=)和逻辑运算符(and, or, not)的使用。
  3. 使用 if-elif-else 结构处理多重条件分支。
  4. 理解 else 语句作为默认/兜底分支的作用。
  5. 编写清晰、嵌套合理的条件判断代码。

核心概念

在编程中,我们经常需要程序根据不同的情况做出不同的决定,就像我们日常生活一样:"如果(if)下雨,我就带伞;否则(else),我就不带。" Python 用 if, elif, else 关键字来实现这种逻辑。

  1. if 语句:最简单的判断 它检查一个条件是否为 True。如果为真,则执行其缩进的代码块。

    temperature = 35
    if temperature > 30:
        print("天气很热,开空调!")
    
  2. if-else 结构:二选一 当条件为 True 时执行一段代码,否则执行另一段代码。

    score = 85
    if score >= 60:
        print("及格了!")
    else:
        print("不及格,需要补考。")
    
  3. if-elif-else 结构:多重选择 当有多个互斥的条件需要检查时使用。elifelse if 的缩写。程序会从上到下依次检查条件,一旦某个条件为 True,就执行对应的代码块,然后跳出整个 if-elif-else 结构。else 是可选的,用于处理所有条件都不满足的情况。

    weather = "sunny"
    if weather == "rainy":
        print("带伞出门")
    elif weather == "cloudy":
        print("可能下雨,最好带伞")
    elif weather == "sunny":
        print("阳光明媚,戴太阳镜")
    else:
        print("查看天气预报再决定")
    
    • 关键点:代码的缩进(通常用4个空格或1个Tab)决定了哪些代码属于哪个if/elif/else分支。这是Python语法的重要组成部分。
  4. 条件表达式 用于 if 后面的"条件"是由比较运算符逻辑运算符组成的表达式,其结果必须是布尔值(TrueFalse)。

    • 比较运算符== (等于),!= (不等于),><>=<=
    • 逻辑运算符and (与),or (或),not (非)
      age = 25
      has_ticket = True
      if age >= 18 and has_ticket:
          print("允许进入影院")
      if not has_ticket:
          print("请先购票")
      

代码示例

示例1:成绩等级判断器 一个经典的多重条件判断示例。

# 获取用户输入的成绩,并转换为浮点数
try:
    score = float(input("请输入你的考试成绩 (0-100): "))
except ValueError:
    print("输入错误,请输入一个数字!")
    exit() # 如果输入不合法,退出程序

# 开始条件判断
if score > 100 or score < 0:
    print("输入的成绩无效,应在0到100之间。")
elif score >= 90:
    print("优秀!")
elif score >= 80:
    print("良好!")
elif score >= 70:
    print("中等。")
elif score >= 60:
    print("及格。")
else:
    print("不及格,需要努力。")

print("成绩查询结束。")

示例2:嵌套的 if 语句 在一个条件判断内部,还可以进行进一步的判断。

# 模拟一个简单的密码验证器
correct_password = "python123"
user_input = input("请输入密码: ")

if user_input == correct_password:
    print("密码正确!")
    # 嵌套一个if,检查密码强度(这里仅作演示)
    if len(correct_password) > 8:
        print("密码强度:高")
    else:
        print("密码强度:一般")
else:
    print("密码错误!")
    # 可以再嵌套,比如记录错误次数等,这里简化处理
    print("请重新尝试。")

示例3:处理复杂条件与空值 结合使用逻辑运算符,并注意处理可能为空的变量。

username = ""  # 模拟从某处获取的用户名,可能为空

# 检查用户名是否有效
if username:  # 在Python中,非空字符串布尔值为True
    print(f"欢迎回来,{username}!")
    # 进一步检查是否为管理员
    if username.lower() == "admin":
        print("您拥有管理员权限。")
else:
    print("游客你好!请登录。")

# 综合示例:判断闰年
year = 2024
is_leap = False # 先假设不是闰年

# 闰年规则:能被4整除但不能被100整除,或者能被400整除
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    is_leap = True

if is_leap:
    print(f"{year} 年是闰年。")
else:
    print(f"{year} 年不是闰年。")

实践练习

练习1:奇偶数判断器

  • 要求:编写一个程序,从用户处获取一个整数,判断它是奇数还是偶数,并输出结果。
  • 提示:使用取模运算符 %,一个数除以2的余数为0是偶数。
  • 预期输出示例
    请输入一个整数: 7
    7 是奇数。
    
    请输入一个整数: 12
    12 是偶数。
    

练习2:年龄阶段划分

  • 要求:编写程序,根据用户输入的年龄,将其划分为"儿童(0-12)"、"青少年(13-17)"、"成年人(18-64)"或"老年人(65+)",并输出对应的阶段名称。
  • 提示:注意年龄边界值的处理(例如,13岁应属于"青少年")。
  • 预期输出示例
    请输入你的年龄: 15
    你正处于青少年阶段。
    

练习3:购物折扣计算

  • 要求:编写一个收银程序。用户输入购物总金额。根据以下规则计算折后价并输出:
    • 金额 >= 1000元,打8折。
    • 金额 >= 500元且 < 1000元,打9折。
    • 金额 >= 200元且 < 500元,打95折。
    • 金额 < 200元,不打折。
  • 预期输出示例
    请输入购物总金额(元): 800
    符合9折优惠,实付金额为: 720.0 元。
    

常见错误

  1. 忘记写冒号 :if, elif, else 后面必须紧跟一个英文冒号,这是语法要求。

    • 错误if x > 5
    • 正确if x > 5:
  2. 缩进错误:属于同一个代码块的语句必须保持相同的缩进级别。

    • 错误
    if True:
    print("这行代码不在if块里") # 缺少缩进,会报IndentationError
    
    • 正确
    if True:
        print("这行代码在if块里") # 与上一行同级缩进
    
  3. 混淆 ==== 是赋值运算符,== 是比较运算符。

    • 错误if x = 5: (尝试将5赋值给x并判断,语法错误)
    • 正确if x == 5: (判断x是否等于5)
  4. 条件顺序错误:在 if-elif 链中,条件的顺序很重要。更具体或范围更小的条件应放在前面。

    • 错误示例(成绩判断):
    if score >= 60:
        print("及格")
    elif score >= 90: # 这个条件永远不会被满足,因为90分也满足 >=60
        print("优秀")
    
    • 正确顺序:应从高到低判断(>=90, >=80, >=70, >=60)。
  5. 忽略边界值:在处理范围时,要仔细考虑等于边界值的情况(例如 >=> 的区别)。

小结

本课我们学习了如何让程序做出决策:

  • if:执行一个基本的条件判断。
  • elif:检查多个互斥条件中的其他可能性(else if的简写)。
  • else:捕获所有未被前述条件匹配的情况,作为默认分支。
  • 条件表达式:由比较运算符(==, !=, >, <等)和逻辑运算符(and, or, not)组成,结果必须是布尔值。
  • 缩进:在Python中,缩进定义了代码块,是语法的一部分,必须严格遵守。

掌握条件判断是编写任何有意义程序的基础,它赋予了程序"思考"和应对不同情况的能力。接下来,我们将学习循环结构,让程序能够重复执行任务。

练习编辑器

python
Loading...

继续学习

完成本课后,建议继续学习下一课「While 循环与循环控制」 以巩固所学知识。