Python布尔型判断真假案例
直接判断真假值
# 布尔值直接判断 print(bool(True)) # True print(bool(False)) # False
数值类型的真假判断
# 整数和浮点数 print(bool(0)) # False - 0为假 print(bool(1)) # True - 非0为真 print(bool(-5)) # True - 负数也为真 print(bool(0.0)) # False print(bool(3.14)) # True
字符串类型的真假判断
# 字符串
print(bool("")) # False - 空字符串为假
print(bool("Hello")) # True - 非空字符串为真
print(bool(" ")) # True - 空格也是非空字符串
print(bool("0")) # True - 字符串"0"不是空字符串
容器类型的真假判断
# 列表
print(bool([])) # False - 空列表为假
print(bool([1,2,3])) # True - 非空列表为真
# 元组
print(bool(())) # False - 空元组为假
print(bool((1,))) # True - 非空元组为真
# 字典
print(bool({})) # False - 空字典为假
print(bool({"a":1})) # True - 非空字典为真
# 集合
print(bool(set())) # False - 空集合为假
print(bool({1,2})) # True - 非空集合为真
None类型的判断
print(bool(None)) # False - None为假
实际应用案例 - 用户输入验证
# 验证用户输入
username = input("请输入用户名: ")
password = input("请输入密码: ")
if username and password: # 两个都非空才为真
print("登录成功!")
else:
print("用户名和密码不能为空!")
# 检查列表是否为空
def process_data(data_list):
if not data_list: # 如果列表为空
print("没有数据需要处理")
return []
return [item * 2 for item in data_list]
data = [1, 2, 3]
print(process_data(data)) # [2, 4, 6]
empty_data = []
print(process_data(empty_data)) # "没有数据需要处理" []
# 检查字典是否有内容
user_info = {"name": "小明"}
if user_info: # 字典非空
print(f"用户姓名: {user_info['name']}")
user_info = {}
if not user_info: # 字典为空
print("用户信息为空")
条件判断中的隐式转换
# 常见的数据验证
age = 25
if age: # age非0,为真
print(f"年龄是: {age}")
score = 0
if not score: # score为0,为假,所以not score为真
print("分数为0")
# 判断字符串是否为空
name = "张三"
if name: # name非空,为真
print(f"你好,{name}")
name = ""
if not name: # name为空,为假,所以not name为真
print("名字不能为空")
真假判断的实用技巧
# 1. 默认值处理
def get_user_count(data):
# 如果data为None或空,返回0
return len(data) if data else 0
print(get_user_count([1, 2, 3])) # 3
print(get_user_count([])) # 0
print(get_user_count(None)) # 0
# 2. 简化条件判断
items = []
# 不好的写法
if len(items) > 0:
print("有数据")
# 更好的写法
if items: # 直接判断,更Pythonic
print("有数据")
# 3. 多个条件判断
def can_access(age, has_permission):
# 年龄大于0且(有权限或年龄大于18)
return bool(age) and (has_permission or age >= 18)
print(can_access(20, True)) # True
print(can_access(0, True)) # False (年龄为0)
print(can_access(15, False)) # False (年龄小于18且无权限)
常见陷阱
# 注意:不要混淆等于和赋值
a = 5
if a == 5: # 正确:判断是否相等
print("a等于5")
# if a = 5: # 错误:这是赋值语句,会报错
# print("这个不会执行")
# 注意空字符串和数字0的区别
print(bool("0")) # True - "0"不是空字符串
print(bool(0)) # False - 0为假
总结表
| 数据类型 | 为假的情况 | 为真的情况 |
|---|---|---|
| 布尔型 | False | True |
| 数字 | 0, 0.0 | 非0数字 |
| 字符串 | 空字符串"" | 非空字符串 |
| 列表 | 非空列表 | |
| 元组 | 非空元组 | |
| 字典 | 非空字典 | |
| 集合 | set() | 非空集合 |
| None | None | 无 |
这些判断规则在日常编程中非常实用,可以让代码更加简洁和Pythonic。
