news 2026/4/30 21:56:57

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python(简单判断) —— 从 if 开始

目录

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

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

哪些值会被当作 False?

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

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

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

如何形成代码块?

常见缩进错误

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

空代码块怎么办?

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

语法

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

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

语法

断言与 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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 21:44:28

【Tidyverse 2.0企业级报告自动化终极指南】:20年数据工程专家亲授——3大不可替代升级特性、5类高危兼容陷阱与零代码交付SOP

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Tidyverse 2.0企业级报告自动化的核心价值与演进逻辑 Tidyverse 2.0 不再仅是语法糖的集合&#xff0c;而是面向企业数据工程闭环的可审计、可扩展、可调度的分析基础设施。其核心价值体现在三重跃迁&a…

作者头像 李华
网站建设 2026/4/30 21:43:37

基于OpenClaw与n8n的AI智能体自动化工作流构建指南

1. 项目概述&#xff1a;当AI智能体遇上自动化工作流最近在折腾自动化工具链&#xff0c;发现一个挺有意思的项目&#xff0c;叫openclaw-n8n-railway。光看这个名字&#xff0c;就能拆出三个关键部分&#xff1a;openclaw&#xff08;开源AI智能体框架&#xff09;、n8n&#…

作者头像 李华
网站建设 2026/4/30 21:41:28

赛芯微XB4302G, 单节锂离子/聚合物电池保护集成电路。

1.描述XB4302系列产品是一款适用于锂离子/聚合物电池保护的高集成度解决方案。XB4302内置高性能功率MOS管、高精度电压检测电路及延时电路。该器件采用超小型TSOT23-4封装&#xff0c;仅需搭配一颗外围元器件&#xff0c;非常适合电池组空间受限的应用场景。 XB4302具备电池应用…

作者头像 李华