Python(简单判断) —— 从 if 开始
目录1.if判断----最基本的条件执行2.判断条件----任何表达式均可哪些值会被当作 False3.空值与非空----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 会自动把它转换成布尔值True或False。这个自动转换的过程叫做“真值测试”Truth Value Testing。哪些值会被当作FalsePython 中以下情况会被视为“假”布尔值False数字0、0.0、0j空字符串空列表[]、空元组()、空字典{}、空集合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 个空格直到缩进回到原来的级别就表示代码块结束。score68 if score 60: print(及格了) # 缩进 4 空格属于 if 块 print(可以庆祝一下) # 同样缩进也属于 if 块 print(程序结束) # 没有缩进与 if 平级总是执行常见缩进错误忘记缩进if True: print(没有缩进) # IndentationError缩进不一致混用空格和 Tab编辑器通常会把 Tab 显示为 4 个空格但实际字符不同。Python 3 不允许混用会报TabError。解决方案设置编辑器让 Tab 自动扩展为空格。多缩进或少缩进不会报错但逻辑会错。比如本应属于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否则返回 b7.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.短路逻辑在条件中的妙用我们在前面提到and和or有短路特性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短路如果user为None假就不会继续求user.name从而避免了AttributeError。感谢你的观看期待我们下次再见