当前位置: 首页 > news >正文

【Python-Day 8】从入门到精通:Python 条件判断 if-elif-else 语句全解析

Langchain系列文章目录

01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南
02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖
03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南
04-玩转 LangChain:从文档加载到高效问答系统构建的全程实战
05-玩转 LangChain:深度评估问答系统的三种高效方法(示例生成、手动评估与LLM辅助评估)
06-从 0 到 1 掌握 LangChain Agents:自定义工具 + LLM 打造智能工作流!
07-【深度解析】从GPT-1到GPT-4:ChatGPT背后的核心原理全揭秘

PyTorch系列文章目录

机器学习系列文章目录

深度学习系列文章目录

Python系列文章目录

01-【Python-Day 1】告别编程恐惧:轻松掌握 Python 安装与第一个程序的 6 个步骤
02-【Python-Day 2】掌握Python基石:变量、内存、标识符及int/float/bool数据类型
03-【Python-Day 3】玩转文本:字符串(String)基础操作详解 (上)
04-【Python-Day 4】玩转文本:Python 字符串常用方法深度解析 (下篇)
05-【Python-Day 5】Python 格式化输出实战:%、format()、f-string 对比与最佳实践
06- 【Python-Day 6】从零精通 Python 运算符(上):算术、赋值与比较运算全解析
07-【Python-Day 7】从零精通 Python 运算符(下):逻辑、成员、身份运算与优先级规则全解析
08-【Python-Day 8】从入门到精通:Python 条件判断 if-elif-else 语句全解析


文章目录

  • Langchain系列文章目录
  • PyTorch系列文章目录
  • 机器学习系列文章目录
  • 深度学习系列文章目录
  • Python系列文章目录
  • 前言
  • 一、`if` 语句:最简单的决策
    • 1.1 什么是条件语句?
    • 1.2 `if` 语句的基本语法
    • 1.3 `if` 语句的工作流程
    • 1.4 实例:判断用户是否成年
  • 二、`if-else` 语句:二选一的抉择
    • 2.1 当 `if` 不满足时怎么办?
    • 2.2 `if-else` 语句的语法
    • 2.3 `if-else` 语句的工作流程
    • 2.4 实例:判断数字奇偶性
  • 三、`if-elif-else` 语句:多重条件的复杂决策
    • 3.1 处理多个互斥条件
    • 3.2 `if-elif-else` 语句的语法
    • 3.3 `if-elif-else` 语句的工作流程
    • 3.4 实例:根据分数评定等级
  • 四、嵌套 `if` 语句:决策中的决策
    • 4.1 什么是嵌套 `if`?
    • 4.2 嵌套 `if` 的语法与应用场景
    • 4.3 实例:简单的用户权限检查
  • 五、条件表达式(三元运算符):简洁的 `if-else`
    • 5.1 追求代码的简洁性
    • 5.2 条件表达式的语法
    • 5.3 应用场景与注意事项
    • 5.4 实例:根据状态赋值
  • 六、常见问题与最佳实践
    • 6.1 缩进错误 (`IndentationError`)
    • 6.2 条件判断的类型 (Truthiness)
    • 6.3 避免过于复杂的嵌套
    • 6.4 `elif` 与多个 `if` 的区别
  • 七、总结


前言

大家好!欢迎来到 Python 学习之旅的第 8 天。在前几天的学习中,我们掌握了 Python 的基本数据类型、字符串操作以及各种运算符。这些构成了我们编写简单指令的基础。然而,现实世界中的程序往往需要根据不同的情况做出不同的反应,就像我们在十字路口需要根据红绿灯决定是停是走一样。这就引出了我们今天的主题——条件语句。条件语句是程序逻辑控制的核心,它赋予了程序“思考”和“决策”的能力。本篇将带你深入理解 Python 中最常用、也是最重要的条件判断结构:ifif-elseif-elif-else,并探讨嵌套条件和简洁的条件表达式。学完本篇,你将能编写出更智能、更灵活的 Python 程序!

一、if 语句:最简单的决策

想象一下,你写了一个程序,需要判断一个用户输入的年龄是否满足某个条件(比如是否成年)。这时,最简单的决策工具——if 语句就派上用场了。

1.1 什么是条件语句?

条件语句(Conditional Statement)允许程序根据某个条件的真假来决定是否执行某段代码。如果条件为真(True),则执行指定的代码块;如果条件为假(False),则跳过该代码块。这就像设定了一个门槛,只有满足条件才能进入。

1.2 if 语句的基本语法

Python 中 if 语句的基本结构非常直观:

if condition:# 条件为 True 时执行的代码块statement(s)
# 后续代码 (无论 if 条件是否满足,都会执行)

关键点解释:

  • if: 关键字,表示条件判断的开始。
  • condition: 一个表达式,其结果必须是布尔值(TrueFalse)。这通常涉及我们在前几篇学到的比较运算符(>, <, ==, !=, >=, <=)和逻辑运算符(and, or, not)。
  • :: 冒号,表示条件判断结束,接下来是满足条件时要执行的代码块。
  • 缩进: if 下方的代码块必须有一致的缩进(通常是 4 个空格)。这是 Python 用来标识代码块范围的方式,至关重要!没有正确的缩进,程序会报错(IndentationError)。

1.3 if 语句的工作流程

if 语句的执行逻辑很简单,可以用流程图清晰表示:

True
False
开始
条件 (condition) 是否为 True?
执行 if 下方的代码块
跳过 if 代码块
执行后续代码
结束

1.4 实例:判断用户是否成年

假设我们定义成年标准为 18 岁(含)。

age = 20 # 假设用户的年龄是 20# 判断年龄是否大于等于 18
if age >= 18:print("您已成年,欢迎访问!") # 条件为 True (20 >= 18),执行这句print("程序继续执行...") # 无论是否成年,这句都会执行# 尝试将 age 改为 15,再运行一次看看效果
age = 15
if age >= 18:print("您已成年,欢迎访问!") # 条件为 False (15 >= 18),这句被跳过print("程序继续执行...")

运行结果(age=20):

您已成年,欢迎访问!
程序继续执行...

运行结果(age=15):

程序继续执行...

二、if-else 语句:二选一的抉择

if 语句只能处理条件满足时的情况。但如果我们希望在条件不满足时执行另一段代码呢?比如,成年人可以访问,未成年人显示提示信息。这时就需要 if-else 结构。

2.1 当 if 不满足时怎么办?

if-else 提供了一个“二选一”的路径。如果 if 的条件为 True,执行 if 块;否则(else),执行 else 块。

2.2 if-else 语句的语法

if condition:# 条件为 True 时执行的代码块statement(s)_when_true
else:# 条件为 False 时执行的代码块statement(s)_when_false
# 后续代码

关键点解释:

  • else: 关键字,必须与 if 配对使用,表示当 if 条件不成立时执行的操作。
  • :: else 后面同样需要冒号。
  • 缩进: else 下方的代码块也需要一致的缩进。ifelse 本身必须在同一缩进层级。

2.3 if-else 语句的工作流程

True
False
开始
条件 (condition) 是否为 True?
执行 if 代码块
执行 else 代码块
执行后续代码
结束

2.4 实例:判断数字奇偶性

一个经典的 if-else 应用是判断一个整数是奇数还是偶数。判断依据是该数除以 2 的余数是否为 0。

number = 7 # 待判断的数字# 判断 number 除以 2 的余数是否为 0
if number % 2 == 0:# 余数为 0,是偶数print(f"数字 {number} 是偶数。")
else:# 余数不为 0,是奇数print(f"数字 {number} 是奇数。")# 尝试将 number 改为 10,再运行一次
number = 10
if number % 2 == 0:print(f"数字 {number} 是偶数。")
else:print(f"数字 {number} 是奇数。")

运行结果(number=7):

数字 7 是奇数。

运行结果(number=10):

数字 10 是偶数。

三、if-elif-else 语句:多重条件的复杂决策

有时,我们需要处理的不是简单的“是”或“否”,也不是“二选一”,而是多种可能的情况,需要进行多重判断。例如,根据考试分数评定等级(优秀、良好、及格、不及格)。这时,if-elif-else 结构就登场了。

3.1 处理多个互斥条件

elif 是 “else if” 的缩写。它允许我们在第一个 if 条件不满足时,检查另一个条件。可以有任意多个 elif 语句。

3.2 if-elif-else 语句的语法

if condition_1:# condition_1 为 True 时执行statement(s)_1
elif condition_2:# condition_1 为 False, 且 condition_2 为 True 时执行statement(s)_2
elif condition_3:# 前两个条件都为 False, 且 condition_3 为 True 时执行statement(s)_3
# ... 可以有更多 elif ...
else:# 以上所有条件都为 False 时执行 (可选)statement(s)_else
# 后续代码

关键点解释:

  • elif: 关键字,必须在 if 之后,else 之前。
  • 执行顺序: Python 会从上到下依次检查 ifelif 的条件。一旦找到第一个为 True 的条件,就执行其对应的代码块,然后跳过所有后续的 elifelse,直接执行整个 if-elif-else 结构之后的代码。
  • else (可选): 最后的 else 用于处理以上所有 ifelif 条件都不满足的情况。如果省略 else,且所有条件都不满足,则整个结构不执行任何代码块。

3.3 if-elif-else 语句的工作流程

True
False
True
False
True
False
True
False
开始
Condition 1 True?
执行 Block 1
Condition 2 True?
执行 Block 2
... More elif ...?
执行对应的 elif Block
有 else?
执行 else Block
跳过所有块
执行后续代码
结束

3.4 实例:根据分数评定等级

假设评分标准:

  • 90 分及以上:优秀
  • 80-89 分:良好
  • 60-79 分:及格
  • 60 分以下:不及格
score = 75 # 学生分数if score >= 90:grade = "优秀"
elif score >= 80: # 能到这里,说明 score < 90grade = "良好"
elif score >= 60: # 能到这里,说明 score < 80grade = "及格"
else: # 能到这里,说明 score < 60grade = "不及格"print(f"分数 {score} 对应的等级是:{grade}")# 尝试修改 score 的值 (例如 95, 82, 55) 观察结果
score = 95
# ... (重复 if-elif-else 结构) ...
if score >= 90: grade = "优秀"
elif score >= 80: grade = "良好"
elif score >= 60: grade = "及格"
else: grade = "不及格"
print(f"分数 {score} 对应的等级是:{grade}")score = 55
# ... (重复 if-elif-else 结构) ...
if score >= 90: grade = "优秀"
elif score >= 80: grade = "良好"
elif score >= 60: grade = "及格"
else: grade = "不及格"
print(f"分数 {score} 对应的等级是:{grade}")

运行结果(score=75):

分数 75 对应的等级是:及格

运行结果(score=95):

分数 95 对应的等级是:优秀

运行结果(score=55):

分数 55 对应的等级是:不及格

思考: 如果把 elif score >= 80 改成 if score >= 80 会发生什么?(提示:如果分数为 95,会输出什么?) 答案是会先判断>=90为True,输出“优秀”,然后独立地判断>=80也为True,将grade覆盖为“良好”,最后输出“良好”。这说明elif保证了分支的互斥性。

四、嵌套 if 语句:决策中的决策

有时,一个决策可能依赖于另一个决策的结果。比如,你想检查一个用户是否有权限访问某个资源,可能需要先判断他是否登录,如果登录了,再判断他的会员等级。这种在一个 ifelifelse 代码块内部再包含另一个 if 语句(或 if-else, if-elif-else)的情况,称为嵌套 if 语句

4.1 什么是嵌套 if

简单来说,就是 if 里面套 if

4.2 嵌套 if 的语法与应用场景

if outer_condition:# 外层条件满足时执行print("外层条件满足")if inner_condition:# 内外层条件都满足时执行print("内层条件也满足")else:# 外层满足,内层不满足时执行print("内层条件不满足")
else:# 外层条件不满足时执行print("外层条件不满足")

应用场景:

  • 需要进行多层次、有依赖关系的判断。
  • 细化某个分支下的逻辑。

注意事项:

  • 嵌套层级不宜过多,否则会使代码难以阅读和维护。通常超过 2-3 层就需要考虑是否可以通过其他逻辑(如函数、逻辑运算符 and)来简化。
  • 注意内层 if 的缩进,它必须相对于外层 if 的代码块进行缩进。

4.3 实例:简单的用户权限检查

is_logged_in = True
user_role = "guest" # 可能的角色有 "admin", "user", "guest"if is_logged_in:print("用户已登录。")if user_role == "admin":print("欢迎管理员!拥有所有权限。")elif user_role == "user":print("欢迎普通用户!拥有部分权限。")else: # 假设登录了但角色未知或为 guestprint("欢迎访客!权限受限。")
else:print("用户未登录,请先登录。")# 尝试修改 is_logged_in 和 user_role 的值观察输出变化
is_logged_in = True
user_role = "admin"
# ... (重复嵌套 if 结构) ...
if is_logged_in: print("用户已登录。");
if user_role == "admin": print("欢迎管理员!拥有所有权限。")
elif user_role == "user": print("欢迎普通用户!拥有部分权限。")
else: print("欢迎访客!权限受限。")
else: print("用户未登录,请先登录。")is_logged_in = False
# ... (重复嵌套 if 结构) ...
if is_logged_in: print("用户已登录。");
if user_role == "admin": print("欢迎管理员!拥有所有权限。")
elif user_role == "user": print("欢迎普通用户!拥有部分权限。")
else: print("欢迎访客!权限受限。")
else: print("用户未登录,请先登录。")

运行结果(is_logged_in=True, user_role=“guest”):

用户已登录。
欢迎访客!权限受限。

运行结果(is_logged_in=True, user_role=“admin”):

用户已登录。
欢迎管理员!拥有所有权限。

运行结果(is_logged_in=False):

用户未登录,请先登录。

五、条件表达式(三元运算符):简洁的 if-else

对于简单的 if-else 赋值操作,Python 提供了一种更简洁的写法,称为条件表达式(Conditional Expression),也常被称为三元运算符(Ternary Operator)。

5.1 追求代码的简洁性

if-else 结构仅仅是为了根据条件给一个变量赋不同的值时,使用标准写法可能显得有些冗长。

# 标准 if-else 写法
age = 20
if age >= 18:status = "成年"
else:status = "未成年"
print(status)

5.2 条件表达式的语法

variable = value_if_true if condition else value_if_false

关键点解释:

  • condition: 判断条件。
  • value_if_true: 如果 conditionTrue,整个表达式的结果是这个值。
  • value_if_false: 如果 conditionFalse,整个表达式的结果是这个值。
  • 这种写法非常紧凑,将 if-else 的逻辑压缩到了一行。

5.3 应用场景与注意事项

  • 适用场景: 主要用于基于简单条件进行二选一赋值。
  • 优点: 代码简洁。
  • 缺点: 如果 conditionvalue_if_true/value_if_false 过于复杂,会降低代码可读性。此时宁可使用标准的 if-else 结构。不要滥用!可读性优先!

5.4 实例:根据状态赋值

使用条件表达式改写 5.1 中的例子:

age = 20
status = "成年" if age >= 18 else "未成年" # 一行搞定
print(status)age = 15
status = "成年" if age >= 18 else "未成年"
print(status)

运行结果(age=20):

成年

运行结果(age=15):

未成年

六、常见问题与最佳实践

在使用条件语句时,新手可能会遇到一些常见问题。

6.1 缩进错误 (IndentationError)

这是 Python 中最常见的错误之一。务必确保 if, elif, else 下方的代码块有正确且一致的缩进(通常是 4 个空格)。

# 错误示例: 缺少缩进
age = 20
if age >= 18:
print("成年") # IndentationError: expected an indented block# 正确示例
if age >= 18:print("成年")

6.2 条件判断的类型 (Truthiness)

if 后面的条件不一定非得是严格的布尔值 TrueFalse。Python 会自动将很多类型的值评估为“真值”(Truthy)或“假值”(Falsy):

  • Falsy(被视为 False): False, None, 数字 0 (包括 0, 0.0), 空序列 (空字符串 "", 空列表 [], 空元组 (), 空字典 {}), 空集合 set().
  • Truthy(被视为 True): 其他所有值,包括非零数字、非空序列等。
my_list = []
if my_list: # my_list 是空列表,为 Falsyprint("列表不为空")
else:print("列表为空") # 这句会被执行name = "Alice"
if name: # name 是非空字符串,为 Truthyprint(f"名字是: {name}") # 这句会被执行

理解 Truthiness 可以让代码更简洁,但有时显式比较(如 if my_list is not None and len(my_list) > 0:)会更清晰。

6.3 避免过于复杂的嵌套

过深的嵌套 if 会让代码像迷宫一样难以理解。可以尝试以下方法简化:

  • 合并条件: 使用 and, or 逻辑运算符合并条件。
  • 提前返回/跳出: 在函数中使用 return 提前结束判断。
  • 重构逻辑: 重新组织判断顺序或拆分成更小的函数。
  • 使用字典映射/策略模式: 对于更复杂的条件分支,可以考虑更高级的设计模式。

6.4 elif 与多个 if 的区别

  • if-elif-else: 是一组互斥的判断。一旦某个条件满足,其代码块执行后,整个结构就结束了。
  • 多个独立的 if: 每个 if 都是独立的判断。无论前面的 if 是否满足,后面的 if 都会被检查。
score = 95# 使用 elif (互斥)
if score >= 90:print("优秀(elif)") # 输出这句,然后结束判断
elif score >= 80:print("良好(elif)")print("-" * 10)# 使用多个 if (独立)
if score >= 90:print("优秀(if)") # 输出这句
if score >= 80: # 独立判断,也满足print("良好(if)") # 输出这句

运行结果:

优秀(elif)
----------
优秀(if)
良好(if)

务必根据你的逻辑需求选择正确的结构。

七、总结

恭喜你,完成了 Python 条件语句的学习!这可是编程逻辑控制的重中之重。让我们回顾一下今天的主要内容:

  1. if 语句: 实现最基本的条件判断,当条件为 True 时执行指定代码块。
  2. if-else 语句: 提供“二选一”的逻辑,条件为 True 执行 if 块,为 False 执行 else 块。
  3. if-elif-else 语句: 处理多个互斥条件,按顺序检查,执行第一个满足条件的块,并跳过其余部分。else 可选,用于处理所有条件都不满足的情况。
  4. 嵌套 if 语句: 在一个条件块内部再进行条件判断,用于处理更复杂的、有层级关系的逻辑。要注意避免过度嵌套以保持代码可读性。
  5. 条件表达式(三元运算符): if-else 的简洁形式,适用于简单的二选一赋值,语法为 value_if_true if condition else value_if_false
  6. 关键注意事项: 缩进是 Python 语法的一部分,必须严格遵守;理解 Truthiness 可以简化条件判断;区分 elif(互斥)和多个 if(独立)的应用场景。

掌握了条件语句,你的 Python 代码就能根据不同的输入和状态做出智能的响应了。这是编写实用程序的关键一步。在下一篇文章中,我们将学习另一种控制程序流程的重要工具——循环语句,它能让我们的程序重复执行任务。敬请期待!


相关文章:

【Python-Day 8】从入门到精通:Python 条件判断 if-elif-else 语句全解析

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

若依 FastAPI + Vue3 项目 Docker 部署笔记( 启动器打包教程)

本文记录了将 start.bat 打包成 .exe 启动器的详细教程&#xff0c;适合项目交付或导师演示用。 &#x1f9ed; 一、如何将 start.bat 打包为启动器 .exe&#xff08;含图标 自动打开浏览器&#xff09; ✅ 1. 创建三大功能脚本 start.bat → 启动项目&#xff08;docke…...

Lebesgue测度和积分理论发展概观

1. 发展背景 积分可以从两个角度来理解。首先&#xff0c;积分是微分的逆函数&#xff0c;因此积分是反导数(译注&#xff1a;但积分是独立于微分的&#xff0c;不能微分的函数也可能可积)。然而&#xff0c;这是一个非常抽象的概念。其次&#xff0c;两点之间的积分可以看…...

算法题题型总结

二叉树题型 解法综述&#xff1a;二叉树的解法&#xff0c;基本上都是依赖遍历&#xff0c;再加上递归的思路来做的。那递归又分为深度优先和广度优先。深度优先算法&#xff0c;前序&#xff0c;中序&#xff0c;后序。广度优先&#xff0c;利用先进先出队列&#xff0c;一层…...

网络编程——TCP和UDP详细讲解

文章目录 TCP/UDP全面详解什么是TCP和UDP&#xff1f;TCP如何保证可靠性&#xff1f;1. 序列号&#xff08;Sequence Number&#xff09;2. 确认应答&#xff08;ACK&#xff09;3. 超时重传&#xff08;Timeout Retransmission&#xff09;4. 窗口控制&#xff08;Sliding Win…...

Qt多线程TCP服务器实现指南

在Qt中实现多线程TCP服务器可以通过为每个客户端连接分配独立的线程来处理&#xff0c;以提高并发性能。以下是一个分步实现的示例&#xff1a; 1. 自定义工作线程类&#xff08;处理客户端通信&#xff09; // workerthread.h #include <QObject> #include <QTcpSo…...

【经管数据】A股上市公司资产定价效率数据(2000-2023年)

数据简介&#xff1a;资产定价效率是衡量市场是否能够有效、准确地反映资产内在价值的重要指标。在理想的市场条件下&#xff0c;资产的市场价格应该与其内在价值保持一致&#xff0c;即市场定价效率达到最高。然而&#xff0c;在实际市场中&#xff0c;由于信息不对称、交易摩…...

打包 Python 项目为 Windows 可执行文件:高效部署指南

Hypackpy 是一款由白月黑羽开发的 Python 项目打包工具&#xff0c;它与 PyInstaller 等传统工具不同&#xff0c;通过直接打包解释器环境和项目代码&#xff0c;并允许开发者修改配置文件以排除不需要的内容&#xff0c;从而创建方便用户一键运行的可执行程序。以下是使用 Hyp…...

【QNX+Android虚拟化方案】138 - USB 底层传输原理

【QNX+Android虚拟化方案】138 - USB 底层传输原理 1. USB 数据包的格式2. 数据传输事务过程3. 四种传输类型3.1 批量传输3.2 中断传输3.3 实时传输3.4 控制传输4. USB 设备枚举过程4.1 Attached: 发送控制传输,读取设备描述符4.2 Power -> Default 这个状态无数据传输4.3 …...

QT6 源(66)篇三:阅读与注释类 QAbstractSpinBox ,这是螺旋框的基类,附上源码

&#xff08;9&#xff09;所有代码来自于头文件 qabstractspinbox . h : #ifndef QABSTRACTSPINBOX_H #define QABSTRACTSPINBOX_H#include <QtWidgets/qtwidgetsglobal.h> #include <QtWidgets/qwidget.h> #include <QtGui/qvalidator.h>/* QT_CONFIG宏实…...

MCP入门

什么是mcp mcp&#xff08;model context protocol&#xff0c;模型上下文协议&#xff09; 标准化协议&#xff1a;让大模型用统一的方式来调用工具&#xff0c;是llm和工具之间的桥梁 A2A&#xff1a;Agent-to-Agent协议 mcp通信机制 提供mcp服务查询的平台 具有工具合集…...

FPGA中级项目8———UART-RAM-TFT

FPGA中级项目8———UART-RAM-TFT UART串口我们学过&#xff0c;RAM IP核学过&#xff0c;TFT同样也学过。那如何将它们联合起来呢&#xff1f; 言简意赅&#xff1a;实现从串口写入图像到RAM并且由TFT显示屏输出&#xff01; 首先第一步&#xff0c;便是要将UART_RX与RAM之间…...

Ocelot\Consul\.NetCore的微服务应用案例

案例资料链接&#xff1a;https://download.csdn.net/download/ly1h1/90733765 1.效果 实现两个微服务ServerAPI1和ServerAPI2的负载均衡以及高可用。具体原理&#xff0c;看以下示意图。 2.部署条件 1、腾讯云的轻量化服务器 2、WindowServer2016 3、.NETCore7.0 4、Negut …...

数值求解Eikonal方程的方法及开源实现

Eikonal方程是一类非线性偏微分方程&#xff0c;形式为 ( |\nabla u(x)| f(x) )&#xff0c;常见于波传播、几何光学、最短路径等问题。以下是数值求解Eikonal方程的方法及开源实现参考&#xff1a; 一、数值求解方法 有限差分法&#xff08;FDM&#xff09; 快速行进法&#…...

Http详解

&#x1f9f1; 一、从 TCP 三次握手到访问网页&#xff1a;两层过程 &#x1f9e9; 1. TCP 三次握手&#xff08;网络传输层&#xff09; 这是 建立连接 的前提&#xff0c;跟 HTTP 无关&#xff0c;但 HTTP 要依赖它。 举例&#xff1a;你打开浏览器访问 https://example.c…...

实验五 完整性

一、引言 本次上机实验的目的主要是让学生掌握数据库完整性的三大类型&#xff08;实体完整性、参照完整性、用户自定义完整性&#xff09;&#xff0c;并通过实际建库建表和数据操作加深理解。 下面将为分别展示 student、course、sc 三个表的创建语句&#xff0c;并设置对应的…...

《原码、反码与补码:计算机中的数字奥秘》

&#x1f680;个人主页&#xff1a;BabyZZの秘密日记 &#x1f4d6;收入专栏&#xff1a;C语言 &#x1f30d;文章目入 一、原码&#xff1a;最直观的表示法1. 正数的原码2. 负数的原码3. 原码的特点 二、反码&#xff1a;原码的“反转”1. 正数的反码2. 负数的反码3. 反码的特…...

论文笔记——QWen2.5 VL

目录 引言架构创新数据整理与训练策略性能与基准测试精细感知能力应用与现实世界影响与现有模型比较结论 引言 视觉理解和自然语言处理的集成一直是人工智能研究的一个重要焦点&#xff0c;促成了日益复杂的视觉语言模型 (VLMs) 的发展。由阿里巴巴集团 Qwen 团队开发的 Qwe…...

前端HTML基础知识

1.HTML介绍 HTML(HyperText Markup Language&#xff0c;超文本标记语言)是构成网页的基本元素&#xff0c;是一种用于创建网页的标准化标记语言。HTML不是一种编程语言&#xff0c;而是一种标记语言&#xff0c;通过标签来描述网页的结构和内容。 超文本&#xff1a;超文本是…...

程序代码篇---ESP32云开发

文章目录 前言 前言 本文简单介绍了实现 ESP32-S3 传感器数据上传至云平台 手机远程控制电机 的完整方案&#xff0c;涵盖推荐的云平台、手机端。 一、推荐云平台及工具 云平台选择 阿里云 IoT 平台 优势&#xff1a;国内稳定、支持大规模设备接入、提供完整设备管理及安全…...

【C语言】文本操作函数fseek、ftell、rewind

一、fseek int fseek ( FILE * stream, long int offset, int origin ); 重新定位文件指针的位置&#xff0c;使其指向以origin为基准、偏移offset字节的位置。 成功返回0&#xff0c;失败返回非零值&#xff08;通常为-1&#xff09;。 origin有如下三种&#xff1a;分别是…...

ARM ASM

ARM ASM ARM寄存器集 列出了ARM的16个程序员可见寄存器&#xff08;r0~r15&#xff09;以及它的状态寄存器。 ARM共有14个通用寄存器r0~r13。寄存器r13被保留用作栈指针&#xff0c;r14存放子程 序返回地址&#xff0c;r15为程序计数器。 由于r15能够被程序员访问&#xff0c…...

【五一培训】Day1

注&#xff1a; 1. 本次培训内容的记录将以“Topic”的方式来呈现&#xff0c;用于记录个人对知识点的理解。 2. 由于培训期间&#xff0c;作者受限于一些现实条件&#xff0c;本文的排版及图片等相关优化&#xff0c;需要过一段时间才能完成。 Topic 1&#xff1a;使用DeepS…...

SpringBoot使用分组校验解决同一个实体对象在不同场景下需要不同校验规则的问题

背景 添加分类的接口不需要id字段&#xff0c;但更新分类的接口需要id字段&#xff0c;当在id字段上使用NotNull注解时&#xff0c;会导致使用添加分类接口报id字段不能为空的错误 解决 定义分组 pojo/Category.java // 如果没有指定分组&#xff0c;则默认属于Default分组…...

Hibernate与MybatisPlus的混用问题(Invalid bound statement (not found))

当项目里已经有了Hibernate后&#xff1a; spring:jpa:hibernate:ddl-auto: updateshow-sql: trueproperties:hibernate:format_sql: true 再配置yml文件就会失效&#xff1a; mybatis-plus:mapper-locations: classpath:mapper/*.xml# 全局策略global-config:db-config:# 自…...

【音视频】ffplay数据结构分析

struct VideoState 播放器封装 typedef struct VideoState {SDL_Thread *read_tid; // 读线程句柄AVInputFormat *iformat; // 指向demuxerint abort_request; // 1时请求退出播放int force_refresh; // 1时需要刷新画⾯&#xff0c;请求⽴即刷新画⾯的意思int paused; // 1时…...

PV操作:宣帧闯江湖武林客栈版学习笔记【操作系统】

P,V,S江湖话翻译 P&#xff08;申请&#xff09; 江湖侠客拔剑大喊“掌柜的&#xff0c;给我一间上房&#xff01;”&#xff08;申请资源&#xff0c;房不够就蹲门口等&#xff09;-要房令牌 V&#xff08;释放&#xff09; 江湖侠客退房时甩出一锭银子&#xff0c;大喊“…...

精品推荐-湖仓一体电商数据分析平台实践教程合集(视频教程+设计文档+完整项目代码)

精品推荐&#xff0c;湖仓一体电商数据分析平台实践教程合集&#xff0c;包含视频教程、设计文档及完整项目代码等资料&#xff0c;供大家学习。 1、项目背景介绍及项目架构 2、项目使用技术版本及组件搭建 3、项目数据种类与采集 4、实时业务统计指标分析一——ODS分层设计与…...

对计网考研中的信道、传输时延、传播时延的理解

对计网考研中的信道、传输时延、传播时延的理解 在学习数据链路层流量控制和可靠传输那一节的三个协议的最大信道利用率时产生的疑惑 情景&#xff1a; 假如A主机和B主机通过集线器连接&#xff0c;A和集线器是光纤连接&#xff0c;B和集线器也是光纤连接&#xff0c;A给B发…...

RAGFlow报错:ESConnection.sql got exception

环境&#xff1a; Ragflowv0.17.2 问题描述&#xff1a; RAGFlow报错&#xff1a;ESConnection.sql got exception _ming_cheng_tks, 浙江, operatorOR;minimum_should_match30%) 2025-04-25 15:55:06,862 INFO 244867 POST http://localhost:1200/_sql?formatjson […...

报错:函数或变量 ‘calcmie‘ 无法识别。

1、具体报错 运行网上一个开源代码&#xff0c;但是运行报如下错&#xff1a; TT_para_gen 函数或变量 calcmie 无法识别。 出错 TT_para_gen>Mie (第 46 行) [S, C, ang,~] calcmie(rad, ns, nm, lambda, nang, ... 出错 TT_para_gen (第 17 行) [~,ang,Miee,C] …...

蓝桥杯获奖后心得体会

文章目录 获奖项备考心得&#x1f4d6; 蓝桥杯 Java 研究生组备考心得&#x1f4cc; 一、备考规划&#x1f4cc; 二、考试技巧&#x1f4cc; 三、心理调整&#x1f4cc; 四、总结 获奖项 JAVA研究生组省二 备考心得 好&#xff01;我来给你写一篇蓝桥杯研究生组Java方向的备…...

大鱼吃小鱼开源

因为知道一些学校也有相关C语言课设 所以这里对代码开源&#xff08;如果没有csdn会员请用夸克&#xff09; 我用夸克网盘分享了「大鱼吃小鱼-程序.zip」&#xff0c;点击链接即可保存。打开「夸克APP」&#xff0c;无需下载在线播放视频&#xff0c;畅享原画5倍速&#xff0…...

深度学习框架搭建(Vscode/Anaconda/CUDA/Pytroch)

目录 ​​​​​​一 Vscode安装 二、Anaconda安装 三、更新显卡驱动 四、安装CUDA 五、安装Pytorch 六、Vscode配置 七、出现的问题汇总 ​​​​​​一 Vscode安装 在 Windows 上安装 访问 VS Code 官网 https://code.visualstudio.com/&#xff0c;点击 "Downl…...

免费实用的图像处理工具箱​

提到图像处理&#xff0c;一般会想到Photoshop。的确PS比较专业&#xff0c;但是学习成本比较高。其实&#xff0c;针对具体的应用场景&#xff0c;选些简单的工具软件会更方便。 今天就给大家分享一款“洋芋田图像工具箱”软件。它支持Windows和Mac电脑。 用这款软件&#x…...

范式演进:从ETL到ELT及未来展望

范式演进:从ETL到ELT及未来展望 引言 随着数据规模与实时分析需求的爆发,传统的集中式 ETL(Extract-Transform-Load)已难以为继,ELT(Extract-Load-Transform)凭借云原生仓库的弹性计算与分析工程的兴起逐步成为主流。2025 年,数据团队正加速从“先变换再加载”走向“…...

定义一个3D cube,并计算cube每个顶点的像素坐标

定义一个3D cube,并计算cube每个顶点的像素坐标 scratch a pixel课程&#xff1a;Your Starting Point! 3D场景中物体所有点与坐标系原点的连线&#xff0c;该连线与像素平面canvas的交点就是场景中3D点其投影点的位置 3D场景中的点均由这个坐标系描述 相似三角形ABC和A’B’…...

Python学习笔记(第二部分)

接续 Python.md 文件的第二部分 字典 字典的基本操作 字典是一系列 键—值 对&#xff0c;每一个键都与一个值关联&#xff0c;值可以是数字&#xff0c;字符串&#xff0c;甚至是列表或字典&#xff0c;可以把任何python对象都作为字典中的值 alien {color:green,points:5}键…...

ZYNQB笔记(十六):AXI DMA 环路测试

版本&#xff1a;Vivado2020.2&#xff08;Vitis&#xff09; 任务&#xff1a;使用 PL 端的 AXI DMA IP 核实现对 DDR3 中数据的读取与写入&#xff0c;实现数据环回&#xff0c;具体流程为&#xff1a; PS 端产生测试数据并写入到 DDR3 中&#xff0c;然后 PL 端的 AXI DMA I…...

Java学习手册:Spring 数据访问

一、Spring JDBC JdbcTemplate &#xff1a;Spring JDBC 提供了 JdbcTemplate 类&#xff0c;它简化了数据库操作&#xff0c;提供了丰富的 API 来执行数据库访问任务。JdbcTemplate 可以自动处理数据库连接的获取、释放&#xff0c;SQL 语句的执行&#xff0c;结果集的处理等…...

第二章 日志分析-apache日志分析(玄机系列)

简介 账号密码 root apacherizhi ssh rootIP 1、提交当天访问次数最多的IP&#xff0c;即黑客IP&#xff1a; 2、黑客使用的浏览器指纹是什么&#xff0c;提交指纹的md5&#xff1a; 3、查看包含index.php页面被访问的次数&#xff0c;提交次数&#xff1a; 4、查看黑客IP访问了…...

类比分析AI Agent 技术

引言&#xff1a;AI Agent 的本质与范式转变 在人工智能领域&#xff0c;AI Agent&#xff08;智能体&#xff09;代表了一种从传统软件系统到自主性实体的深刻范式转变。不同于仅仅执行预设指令或算法的程序&#xff0c;现代 AI Agent 被设计为能够&#xff1a; 感知 (Perce…...

【业务领域】PCIE协议理解

PCIE协议理解 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 PCIE学习理解。 文章目录 PCIE协议理解[TOC](文章目录) 前言零、PCIE掌握点&#xff1f;一、PCIE是什么&#xff1f;二、PCIE协议总结物理层切速 链路层事务层6.2 TLP的路…...

设计模式简述(十四)组合模式

组合模式 描述基本使用所有节点方法一致使用 叶子无实现子节点使用 添加向上查询使用&#xff08;没变化&#xff09; 描述 组合模式用于描述部分与整体的关系&#xff0c;将个体对象与组合对象的行为统一&#xff0c;便于维护整个数据集。 基本使用 所有节点方法一致 定义…...

【Tool】vscode

vscode问题集锦 1 全局搜索失效 ctrl shift f 快捷键失效&#xff1a; 原因&#xff1a;可能与输入法快捷键冲突&#xff0c;重定义输入法快捷键即可 其他 看心情和经历补充&#xff5e;...

文件操作--文件包含漏洞

本文主要内容 脚本 ASP、PHP、JSP、ASPX、Python、Javaweb --# 各种包含函数 检测 白盒 代码审计 黑盒 漏扫工具、公开漏洞、手工看参数值及功能点 类型 本地包含 有限制、无限制 远程包含 无限制、有限制…...

数字智慧方案6156丨智慧医联体信息化解决方案(50页PPT)(文末有下载方式)

资料解读&#xff1a;智慧医联体信息化解决方案 详细资料请看本解读文章的最后内容。 在医疗改革不断深化的大背景下&#xff0c;医联体信息化建设成为推动医疗服务高质量发展的关键力量。《智慧医联体信息化解决方案》这份资料&#xff0c;全面且深入地阐述了医联体信息化建…...

华为eNSP:多区域集成IS-IS

一、什么是多区域集成IS-IS&#xff1f; 多区域集成IS-IS是一种基于中间系统到中间系统&#xff08;IS-IS&#xff09;协议优化的网络架构设计&#xff0c;通过多区域协同、路径优化和扩展性增强实现高效路由管理&#xff0c;其核心特征如下&#xff1a; 1、分布式架构与多区…...

RAG技术完全指南(一):检索增强生成原理与LLM对比分析

RAG技术完全指南&#xff08;一&#xff09;&#xff1a;检索增强生成原理与LLM对比分析 文章目录 RAG技术完全指南&#xff08;一&#xff09;&#xff1a;检索增强生成原理与LLM对比分析1. RAG 简介2. 核心思想3. 工作流程3.1 数据预处理&#xff08;索引构建&#xff09;3.2…...

(持续更新)Ubuntu搭建LNMP(Linux + Nginx + MySQL + PHP)环境

LNMP&#xff08;Linux Nginx MySQL PHP&#xff09;环境是在Linux操作系统上构建的一个高性能Web服务器环境。M也可以指代其他数据库&#xff0c;P也可以指代Python 1. 准备Linux系统 确保你已经在一台服务器或虚拟机上安装了Linux操作系统。推荐使用Ubuntu、CentOS或Debi…...