目录

  • 简单示例
  • 条件测试
    • 检查是否相等与不等
    • 检查多个条件
    • 检查特定的值是否在/不在列表中
    • 布尔表达式
  • if语句
    • 简单的if语句
    • if-else语句
    • if-elif-else语句
  • 使用if语句处理列表
    • 检查特殊元素
    • 确定列表非空
    • 使用多个列表
    • 总结

在这里插入图片描述

if 语句是Python编程中最基本也是最重要的控制结构之一。它允许程序根据不同的条件执行不同的代码块,是实现程序逻辑判断的核心工具。我们从一个简单的示例开始。

简单示例

cars = ['audi', 'bmw', 'volvo', 'toyota']
for car in cars:if car == 'bmw':print(car.upper())else:print(car.title())

在上面的例子中,大多数汽车品牌都应以首字母大写的方式打印其名称,但是汽车品牌 ‘bmw’ 应以全大写的方式打印。上述示例应用 if 语句,成功将 ‘bmw’ 字段从 cars 列表中识别并处理。

条件测试

条件测试是 if 语句的核心,每条 if 语句都是一个值为 True 或 False 的表达式,这种表达式即称为条件测试。它决定了程序的执行路径,而Python,则提供了多种方式来构建条件测试。

检查是否相等与不等

最常见的条件测试是检查两个值是否相等或不等:

# 相等检查
name = "Alice"
if name == "Alice":print(f"你好,{name}!")# 不等检查
temperature = 25
if temperature != 30:print("温度不是30度")# 忽略大小写的字符串比较
city = "Beijing"
if city.lower() == "beijing":print("欢迎来到北京!")

注意事项:

  • 使用 == 进行相等比较,而不是单个 =(赋值运算符)
  • 字符串比较是区分大小写的,可以使用 .lower().upper() 方法进行不区分大小写的比较

检查多个条件

Python使用 andornot 操作符来组合多个条件:

# 使用 and:所有条件都必须为真
age = 25
income = 50000
if age >= 18 and income >= 30000:print("符合贷款条件")# 使用 or:至少一个条件为真
weather = "晴天"
temperature = 22
if weather == "晴天" or temperature > 20:print("今天适合外出")# 使用 not:条件为假时执行
is_weekend = False
if not is_weekend:print("今天是工作日")# 复杂条件组合
score = 85
attendance = 90
if (score >= 80 and attendance >= 85) or score >= 95:print("获得优秀成绩!")
  • 使用 and:所有条件都必须为真
  • 使用 or:至少一个条件为真
  • 使用 not:条件为假时执行

检查特定的值是否在/不在列表中

使用innot in关键字可以方便地检查元素是否存在于序列中:

# 检查值是否在列表中
favorite_fruits = ['苹果', '香蕉', '橙子', '葡萄']
fruit = '苹果'if fruit in favorite_fruits:print(f"{fruit}是我喜欢的水果之一")# 检查值是否不在列表中
banned_users = ['user123', 'spammer', 'troll']
username = 'alice'if username not in banned_users:print("欢迎登录!")# 在字符串中查找子字符串
message = "Python是一门强大的编程语言"
if "Python" in message:print("这条消息提到了Python")# 检查字典中的键
user_info = {'name': '张三', 'age': 25, 'city': '上海'}
if 'email' not in user_info:print("用户信息中缺少邮箱")

布尔表达式

下面我们继续深入,布尔表达式。布尔表达式直接返回True或False值,可以直接用作条件:

# 布尔变量
is_student = True
if is_student:print("学生价格优惠")# 函数返回布尔值
def is_even(number):return number % 2 == 0num = 10
if is_even(num):print(f"{num}是偶数")# 列表的布尔值:空列表为False,非空列表为True
shopping_list = []
if shopping_list:print("购物清单不为空")
else:print("购物清单是空的")# 数字的布尔值:0为False,非0为True
balance = 0
if balance:print("账户有余额")
else:print("账户余额为零")

在很多实际示例中,应用布尔表达式进行判断,是一种高效的、易读易懂的方式。

if语句

简单的if语句

if语句有很多种,具体选择哪一种取决于要测试的条件数。简单的 if 语句只包含一个条件和对应的执行操作代码块:

# 基本语法
password = "123456"
if len(password) < 8:			# 条件print("密码太短,请使用至少8个字符")	# 执行操作代码块# 多行代码块
score = 95
if score >= 90:			# 条件print("优秀成绩!")print(f"你的分数是:{score}")print("继续保持!")# 嵌套if语句
user_type = "admin"
is_logged_in = Trueif is_logged_in:print("用户已登录")if user_type == "admin":print("管理员权限已激活")

if-else语句

有时,我们不仅需要在条件测试时执行一个操作,在没有通过时也需指定另一个操作。if-else 语句提供了条件为假时的备选执行路径:

# 基本if-else结构
age = 16
if age >= 18:print("可以投票")
else:print("还不能投票")# 处理用户输入
number = int(input("请输入一个数字: "))
if number > 0:print("这是一个正数")
else:print("这是零或负数")# 字符串处理
username = input("请输入用户名: ").strip()
if username:print(f"欢迎,{username}!")
else:print("用户名不能为空")

当然,if-else 语句只能用在逻辑上或真或假的情况下。

if-elif-else语句

当需要检查多个条件时,if-elif-else 语句提供了清晰的解决方案:

# 成绩等级划分
score = 78
if score >= 90:grade = 'A'
elif score >= 80:grade = 'B'
elif score >= 70:grade = 'C'
elif score >= 60:grade = 'D'
else:grade = 'F'print(f"成绩:{score},等级:{grade}")# 季节判断
month = 7
if month in [12, 1, 2]:season = "冬季"
elif month in [3, 4, 5]:season = "春季"
elif month in [6, 7, 8]:season = "夏季"
elif month in [9, 10, 11]:season = "秋季"
else:season = "无效月份"print(f"{month}月是{season}")# 复杂的条件判断
age = 25
income = 45000
credit_score = 720if age >= 21 and income >= 50000 and credit_score >= 700:loan_status = "批准 - 优惠利率"
elif age >= 18 and income >= 30000 and credit_score >= 650:loan_status = "批准 - 标准利率"
elif age >= 18 and income >= 20000:loan_status = "需要担保人"
else:loan_status = "拒绝"print(f"贷款状态:{loan_status}")

当然,读者需要注意,else 模块非必须,即条件判断语句可忽略 else 代码块。

使用if语句处理列表

列表处理是Python编程中的常见任务,结合if语句可以实现强大的数据筛选和处理功能,且一般对于列表的操作,都会与循环 for 结合在一起,从而轮询的方式实现对整个列表的条件测试。

检查特殊元素

在处理列表时,经常需要对特定元素进行特殊处理:

# 处理VIP用户
users = ['alice', 'bob', 'admin', 'charlie', 'guest']print("用户登录状态:")
for user in users:if user == 'admin':print(f"{user}: 管理员 - 全部权限")elif user == 'guest':print(f"{user}: 访客 - 只读权限")else:print(f"{user}: 普通用户 - 基本权限")# 处理订单状态
orders = [{'id': 1, 'status': 'pending', 'amount': 100},{'id': 2, 'status': 'completed', 'amount': 250},{'id': 3, 'status': 'cancelled', 'amount': 80},{'id': 4, 'status': 'pending', 'amount': 150}
]print("\n订单处理:")
for order in orders:if order['status'] == 'pending':print(f"订单 {order['id']}: 等待处理,金额 {order['amount']}元")elif order['status'] == 'completed':print(f"订单 {order['id']}: 已完成,收入 {order['amount']}元")elif order['status'] == 'cancelled':print(f"订单 {order['id']}: 已取消,退款 {order['amount']}元")# 数据清洗示例
raw_data = [1, '', 0, 'hello', None, 42, [], 'world', False]
cleaned_data = []for item in raw_data:if item:  # 过滤掉"假值"cleaned_data.append(item)elif item == 0:  # 保留数字0cleaned_data.append(item)print(f"\n原始数据:{raw_data}")
print(f"清洗后数据:{cleaned_data}")

请添加图片描述

提示:‘’0None[]False 都为假值,但在 Python 中,为了方便数值计算,bool 类型是 int 类型的子类。True 等于 1,False 等于 0。所以 False == 0 的结果是 True

确定列表非空

在处理列表之前,检查列表是否为空是一个好习惯:

# 基本的空列表检查
shopping_cart = []if shopping_cart:print("购物车商品:")for item in shopping_cart:print(f"- {item}")print(f"总计 {len(shopping_cart)} 件商品")
else:print("购物车是空的,快去添加商品吧!")# 更复杂的列表处理
def process_scores(scores):if not scores:return "没有成绩数据"total = sum(scores)average = total / len(scores)highest = max(scores)lowest = min(scores)return f"""
成绩统计:
- 总分:{total}
- 平均分:{average:.2f}
- 最高分:{highest}
- 最低分:{lowest}
- 学生人数:{len(scores)}
"""

使用多个列表

在实际应用中,经常需要同时处理多个列表:

# 学生信息管理
students = ['张三', '李四', '王五', '赵六', '陈七']
scores = [85, 92, 78, 96, 88]
grades = ['B', 'A', 'C', 'A', 'B']# 确保所有列表长度一致
if len(students) == len(scores) == len(grades):print("学生成绩报告:")print("-" * 40)for i in range(len(students)):student = students[i]score = scores[i]grade = grades[i]# 根据成绩给出评价if score >= 90:comment = "优秀"elif score >= 80:comment = "良好"elif score >= 70:comment = "中等"elif score >= 60:comment = "及格"else:comment = "不及格"print(f"{student:6s} | 分数:{score:3d} | 等级:{grade} | 评价:{comment}")
else:print("错误:学生信息数据不完整")

总结

if语句是Python编程的基石,掌握其各种用法对于编写高效、清晰的代码至关重要。本文涵盖了:

  1. 基础概念:从简单示例入手,理解if语句的基本工作原理
  2. 条件测试:掌握各种条件判断方式,包括相等性检查、逻辑运算符、成员测试和布尔表达式
  3. 语句结构:深入了解if、if-else和if-elif-else三种基本结构
  4. 实际应用:学会在列表处理中应用if语句,解决实际编程问题

通过大量的实例代码,我们看到if语句在数据处理、用户交互、条件判断等场景中的强大功能。熟练掌握这些技能将为你的Python编程之路奠定坚实的基础。

最后,记住,良好的编程实践包括:

  • 使用清晰、有意义的变量名
  • 保持代码缩进一致
  • 在复杂条件中使用括号提高可读性
  • 处理好边界情况(如空列表、None值等)
  • 编写简洁而富有表现力的条件语句

2025.09 西三旗

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/921689.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921689.shtml
英文地址,请注明出处:http://en.pswp.cn/news/921689.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【实战中提升自己】内网安全部署之STP的安全技术部署

1 1拓扑 「模拟器、工具合集」复制整段内容 链接&#xff1a;https://docs.qq.com/sheet/DV0xxTmFDRFVoY1dQ?tab7ulgil1 STP的安全技术部署 说明&#xff1a;为什么需要注意STP的安全呢&#xff0c;在二层中其实存在很多不安全的因素&#xff0c;物理上…

GEM5学习(5): ARM 架构功耗仿真

运行脚本基于gem5提供的脚本&#xff0c;启动功耗仿真。实际工作中应该不会用gem5进行功耗的仿真吧&#xff0c;Cadence和Synopsys好像都有配套的的功耗建模工具。事先要配置好 IMG_ROOT的环境变量./build/ARM/gem5.opt configs/example/arm/fs_power.py \--caches \--bootl…

【Python基础】 19 Rust 与 Python if 语句对比笔记

一、基本语法对比 Rust if 语句 // 基本形式 let number 7;if number < 5 {println!("condition was true"); } else {println!("condition was false"); }// 多条件 else if if number % 4 0 {println!("number is divisible by 4"); } el…

Vue项目_项目配置脚本代码详细讲解

Vue项目代码详细讲解 1. jsconfig.json - JavaScript配置文件 {"compilerOptions": { // 编译器选项配置"target": "es5", // 编译目标&#xff1a;将代码编译为ES5版本&#xff0c;确保更好的浏览器兼容性"module": "esnext…

第一节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门

Vben Admin vben5 系列文章目录 &#x1f4bb; 基础篇 ✅ 第一节&#xff1a;Vben Admin 最新 v5.0 (vben5) Python Flask 快速入门 ✅ 第二节&#xff1a;Vben Admin 最新 v5.0 (vben5) Python Flask 快速入门 - Python Flask 后端开发详解(附源码) ✅ 第三节&#xff1a;V…

Guava中常用的工具类

1. 集合工具类&#xff08;com.google.common.collect&#xff09;Guava 对 Java 集合框架进行了丰富扩展&#xff0c;解决了标准集合的诸多痛点。&#xff08;1&#xff09;Lists / Sets / Maps:用于简化集合创建和操作&#xff1a;// 创建不可变集合&#xff08;线程安全&…

redission实现读写锁的原理

Redisson 实现分布式读写锁的核心原理是 ​基于 Redis 的 Lua 脚本原子操作​ ​Pub/Sub 通知机制&#xff0c;在保证强一致性的同时实现高效的读并发&#xff08;读不阻塞读&#xff0c;写阻塞读&#xff09;。以下是其核心设计&#xff1a;​一、核心数据结构​Redisson 使用…

【 ​​SQL注入漏洞靶场】第二关文件读写

SQLi-Labs​它是一个开源的、专门为学习 ​​Web安全​​ 和 ​​SQL注入技术​​ 而设计的靶场项目。开发者故意在代码中留下了各种不同类型的SQL注入漏洞&#xff0c;让安全研究人员、学生和爱好者可以在一个合法、安全的环境中进行实战练习&#xff0c;从而掌握发现和利用SQ…

设计艺术~缓存结构设计

背景 面对高QPS场景的业务&#xff0c;不得不考虑对一些数据做缓存设计&#xff0c;常见的缓存设计有这些&#xff1a;DB Proxy缓存、分布式缓存、Localcache缓存。 在考虑加缓存的背景下不考虑数据的一致性&#xff0c;都是瞎扯&#xff0c;所以我们再定义一下数据的一致性场景…

后端开发技术栈

后端开发技术栈核心技术内容平台 (Content Platform)电商 (E-Commerce)金融科技 (FinTech) / 支付物联网 (IoT - Internet of Things)游戏后端 (Game Backend)社交平台搜索平台企业级应用开发音视频处理后端地图与地理位置服务DevOps大数据开发大模型应用开发智能合约开发核心技…

【ICCV2025】计算机视觉|即插即用|ESC:颠覆Transformer!超强平替,ESC模块性能炸裂!

论文地址&#xff1a;https://arxiv.org/pdf/2503.06671 代码地址&#xff1a;https://github.com/dslisleedh/ESC 关注UP CV缝合怪&#xff0c;分享最计算机视觉新即插即用模块&#xff0c;并提供配套的论文资料与代码。 https://space.bilibili.com/473764881 摘要 本研究…

【面试场景题】如何进行高并发系统的性能测试?

文章目录一、明确测试目标与指标二、测试环境搭建三、测试工具选型四、测试场景设计五、执行测试与监控六、瓶颈分析与调优七、测试报告与迭代总结高并发系统的性能测试是验证系统在极限流量下是否能保持稳定运行的关键环节&#xff0c;需要结合场景设计、工具选型、指标监控、…

攻防世界ReverseMe-120

这道题比较经典&#xff0c;涉及三个知识点&#xff0c;所以记录一下。首先给了一个文件&#xff0c;detect it easy看了下&#xff0c;是32位exe。放入ida中&#xff0c;找下main函数&#xff0c;F5反编译看一下伪代码。int __cdecl main(int argc, const char **argv, const …

小白也能看懂,HTTP中的文件上传与下载到底发生了什么?

HTTP 文件传输协议解析&#xff1a;上传与下载 这份文档会用最简单的方式&#xff0c;带你了解 HTTP 协议是如何处理文件下载和上传的。我们会专注于协议本身&#xff0c;看看客户端&#xff08;比如你的浏览器&#xff09;和服务端&#xff08;网站服务器&#xff09;之间到底…

快速构建数据集-假数据(生成划分)

快速构建数据集-假数据1、torch.randn&#xff08;✅&#xff09;2、HuggingFace Datasets&#xff08;✅&#xff09;&#x1f539;1. 从字典生成&#x1f539;2. 从 pandas.DataFrame 生成&#x1f539;3. 批量生成“业务型”假数据&#xff08;配合 Faker&#xff09;&#…

[修订版]Xenomai/IPIPE源代码情景解析

[修订版]Xenomai/IPIPE源代码情景解析 第一章&#xff1a;Interrupt Pipeline介绍 1.1 I-pipe与Xenomai1.2 I-pipe核心概念1.3 拉取I-pipe代码 第二章&#xff1a;I-pipe对ARM64异常的改造 2.1 ARM64中断机制与异常处理2.2 EL0_IRQ 中断改造之入口2.3 EL0_IRQ 中断改造之中断处…

【Qt开发】按钮类控件(三)-> QCheckBox

目录 1 -> 概述 2 -> 核心特性 2.1 -> 状态管理 2.2 -> 信号机制 2.3 -> 外观与文本 3 -> 应用场景 4 -> 代码示例 5 -> 总结 1 -> 概述 QCheckBox 是 Qt 框架中提供的一个基础控件&#xff0c;用于实现复选框功能。它允许用户在两种或三种…

在新发布的AI论文中 pytorch 和tensorflow 的使用比例

根据 2025 年最新的学术动态和行业报告&#xff0c;PyTorch 在 AI 论文中的使用比例已占据绝对主导地位&#xff0c;而 TensorFlow 的占比持续下降。以下是基于多个权威来源的综合分析&#xff1a; 一、顶级会议中的框架分布 在 NeurIPS、ICML、CVPR 等顶级学术会议中&#xff…

3DXML格式是什么?用什么软件可以打开?

3DXML 是一种开放标准的数据交换格式&#xff0c;主要用于三维 CAD&#xff08;计算机辅助设计&#xff09;模型的存储和交换。它是由 Dassault Systmes 开发的一种文件格式&#xff0c;常用于 CATIA V6 和其他支持该格式的应用程序中。3DXML 文件可以包含完整的 3D 模型数据&a…

9月8日星期一今日早报简报微语报早读

9月8日星期一&#xff0c;农历七月十七&#xff0c;早报#微语早读。1、中国火箭与月亮同框&#xff0c;遥感四十号03组卫星发射成功&#xff1b;2、湖南郴州开发区改革&#xff1a;编制数由815名减至680名&#xff0c;精简16.6%&#xff1b;3、水利部对广东、广西启动洪水防御Ⅳ…