Python(简单判断) —— 从 if 开始

目录

1.if判断----最基本的条件执行

2.判断条件----任何表达式均可

[哪些值会被当作 False?](#哪些值会被当作 False?)

3.空值与非空----Pythonic判断

判断用户输入是否有效(去空格后)

4.代码块----缩进决定归属

如何形成代码块?

常见缩进错误

5.空语句pass-----占位符

空代码块怎么办?

[6. 条件表达式(三元运算符)](#6. 条件表达式(三元运算符))

语法

常见用途:函数中的快速返回

7.assert断言----调试利器

语法

[断言与 if 的区别](#断言与 if 的区别)

重要:生产环境可以禁用断言

8.短路逻辑在条件中的妙用

取第一个真值(或最后一个假值)

安全的属性访问


1.if判断----最基本的条件执行

if 条件:

条件为真时执行的代码

注意:if 后面要跟一个条件表达式,然后是一个英文冒号 :。下一行开始是缩进的代码块(通常缩进 4 个空格)。这个缩进的代码块只有在条件成立时才会执行。

复制代码
score = 68
if score >= 60:
    print("及格了!")
  • 条件为 True 则执行,否则跳过。

注:

1.if 是 Python 的保留字(关键字),不能用作变量名。

2.条件后面一定要有冒号 :,初学者经常忘记,导致语法错误。

3.缩进必须一致,推荐使用 4 个空格,不要混用 Tab 和空格,否则会报 TabError

2.判断条件----任何表达式均可

很多初学者以为 if 后面的条件必须是像 a > b 这样的比较运算,其实不是。Python 非常灵活:任何表达式 都可以放在 if 后面,Python 会自动把它转换成布尔值(TrueFalse)。这个自动转换的过程叫做"真值测试"(Truth Value Testing)。

哪些值会被当作 False

Python 中以下情况会被视为"假":

  • 布尔值 False

  • 数字 00.00j

  • 空字符串 ""

  • 空列表 []、空元组 ()、空字典 {}、空集合 set()

  • None

其他所有值(包括非零数字、非空字符串、非空容器等)都被视为"真"。

if后的表达式会自动转换为布尔值

复制代码
age = 18
if age == 18:           # 比较运算
    print("刚好成年")
if age >= 18:           # 大于等于
    print("可以投票")

name = "张三"           # 定义 name 变量,也可以改成 input("请输入名字:")
if name:                # 非空字符串为 True
    print(f"你好, {name}")

if 5 > 3 and 2 < 4:     #逻辑组合
    print("真")

weekday = "Sat"         # 定义 weekday,也可以是 "Sun" 或 "Mon"
if weekday in ("Sat", "Sun"):   #in运算
    print("周末")

3.空值与非空----Pythonic判断

在 Python 社区,判断一个值是否为空(或零、或 None)的标准写法是直接 if x:if not x:。这种写法不仅简洁,而且能正确处理各种类型。

写法 含义
if x: 非空/非零/非None 时真
if not x: 空/零/None 时真
复制代码
items = []
if items:
    print("非空")
else:
    print("空列表")
  • 在 Python 中,空列表 [] 被视为 False,而非空列表(如 [1,2])被视为 True

  • 这里 items 是空列表,所以 if items: 条件为假,执行 else 分支,输出:空列表

判断用户输入是否有效(去空格后)

复制代码
user_input = "  "
if user_input.strip():
    print("有效输入")
  • input 是一个包含两个空格的字符串 " "

  • strip() 方法会删除字符串首尾的空白字符(空格、制表符等),返回一个新字符串。这里 " ".strip() 的结果是空字符串 ""。

  • 空字符串在条件判断中相当于 False,因此 if input.strip(): 条件为假,不会执行 print。所以没有任何输出。

最佳实践总结

  • 要判断"是否为空/零/None" → 用 if not x:

  • 要判断"是否非空/非零/非None" → 用 if x:

  • 专门 判断 None → 用 if x is None:if x is not None:

4.代码块----缩进决定归属

Python 用缩进 来划分代码块,而不是像 C/Java 使用花括号 {}。这强制了代码的整洁,也是初学者容易出错的地方。

如何形成代码块?

if 语句的冒号后面,换行并缩进(通常 4 个空格),直到缩进回到原来的级别,就表示代码块结束。

复制代码
score=68
if score >= 60:
    print("及格了")          # 缩进 4 空格,属于 if 块
    print("可以庆祝一下")    # 同样缩进,也属于 if 块
print("程序结束")            # 没有缩进,与 if 平级,总是执行

常见缩进错误

  1. 忘记缩进

    复制代码
    if True:
    print("没有缩进")   # IndentationError
  2. 缩进不一致 (混用空格和 Tab):

    编辑器通常会把 Tab 显示为 4 个空格,但实际字符不同。Python 3 不允许混用,会报 TabError
    解决方案:设置编辑器,让 Tab 自动扩展为空格。

  3. 多缩进或少缩进

    不会报错,但逻辑会错。比如本应属于 if 的代码因为没有缩进而被当成了普通代码,或者不该缩进的代码意外进入 if 块。

5.空语句pass-----占位符

空代码块怎么办?

有时候你想先写 if 结构,但内部逻辑还没想好。Python 不允许空的代码块,会报语法错误。这时可以用 pass 语句作为"占位符",它什么都不做,只是让语法通过。

复制代码
condition =7
if condition:
    pass   # 待实现

6. 条件表达式(三元运算符)

很多时候,你的"判断"只是为了给一个变量赋值:如果条件成立赋值为 A,否则赋值为 B。Python 提供了一种紧凑的写法,称为条件表达式(也叫三元运算符)。

语法

值1 if 条件 else 值2

当条件为真时,整个表达式的值为 值1;否则为 值2

复制代码
age = 18
status = "成年" if age >= 18 else "未成年"
print(status)   #成年

等价于
if age >= 18:
    status = "成年"
else:
    status = "未成年"

三元运算符更简短,适合简单的二分赋值。但不适合嵌套使用

虽然能工作,但可读性很差,容易出错。推荐拆分成 if-elif 语句。

常见用途:函数中的快速返回

复制代码
def my_max(a, b):          # 定义一个名为 my_max 的函数,接收两个参数 a 和 b
    return a if a > b else b   # 如果 a > b 成立,返回 a;否则返回 b

7.assert断言----调试利器

断言是一种特殊的条件判断:它假设某个条件一定为真,如果条件为假,程序会立即崩溃并抛出 AssertionError。断言主要用于开发阶段检测程序中的逻辑错误,或者在单元测试中验证预期结果。

语法

assert 条件, "可选错误信息"

复制代码
def divide(a, b):
    assert b != 0, "除数不能为零"
    return a / b

print(divide(10, 2))   # 正常 5.0
print(divide(10, 0))   # 触发 AssertionError: 除数不能为零

断言与 if 的区别

  • if 用于正常业务逻辑,即使条件为假程序也能继续(通过 else 分支处理)。

  • assert 用于检测"不该发生"的情况,一旦发生就应该立即停止运行,而不是尝试恢复。

重要:生产环境可以禁用断言

Python 启动时可以使用 -O 优化选项,此时所有 assert 语句都会被忽略,不执行也不检查。因此绝对不要assert 做数据验证(比如检查用户输入是否合法),因为一旦开启优化,验证就会失效。断言只适合检查程序内部的逻辑错误。

8.短路逻辑在条件中的妙用

我们在前面提到 andor 有短路特性:and 左边为假时右边不执行,or 左边为真时右边不执行。利用这个特性,我们可以写出非常简洁的"默认值"或"安全检查"代码。

取第一个真值(或最后一个假值)

name = input("请输入姓名:") or "匿名用户"

如果用户输入了非空字符串,input 返回的字符串为真,or 直接返回该字符串,赋值给 name。如果用户直接回车(空字符串),空字符串为假,or 继续计算右边的值,于是 name 被赋值为 "匿名用户"。这种写法一行就实现了"如果输入为空则用默认值"。

安全的属性访问

假设有一个用户对象 user,它有 name 属性,但 user 本身可能是 None。直接访问 user.name 会报错。

if user and user.name:

print(user.name)

因为 and 短路,如果 userNone(假),就不会继续求 user.name,从而避免了 AttributeError

感谢你的观看,期待我们下次再见!

相关推荐
BU摆烂会噶6 小时前
【LangGraph】线程级持久化深度实战(PostgreSQL + 重放机制)
数据库·人工智能·python·postgresql·langchain
峥嵘life6 小时前
Android 不同的蓝牙音箱连接后声音突变问题分析解决
android·学习
WL_Aurora6 小时前
Python推导式与生成器
python
高洁016 小时前
AI技术分享:如何做好职场内部技术培训
python·深度学习·知识图谱
Willliam_william6 小时前
QEMU学习之路(12)— 使用qemu-system-riscv64测试IOMMU
大数据·学习·elasticsearch
2zcode6 小时前
基于Chaboche物理约束与LSTM残差学习的316L不锈钢循环塑性灰箱本构建模研究
学习·机器学习·lstm
E_ICEBLUE6 小时前
使用 Python 在 PowerPoint 中添加或移除背景(图像与颜色)
python·powerpoint
研究点啥好呢6 小时前
华为数据分析工程师面试题精选:10道高频考题+答案解析
python·sql·面试·求职招聘