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

Python 基础语法与数据类型(六) - 条件语句、循环、循环控制

文章目录

      • 1. 条件语句 (if, elif, else)
        • 1.1 if 语句
        • 1.2 if...else 语句
        • 1.3 if...elif...else 语句
        • 1.4 条件表达式的“真值”
        • 1.5 嵌套条件语句
      • 2. 循环 (Loops)
        • 2.1 for 循环
        • 2.2 range() 函数
        • 2.3 while 循环
      • 3. 循环控制 (break, continue)
        • 3.1 break 语句
        • 3.2 continue 语句
      • 4. 循环中的 else 块 (了解)
      • 总结
      • 练习题
      • 练习题答案
  • **创作不易,请大家点赞加收藏,关注我,持续更新教程!**

在之前的学习中,我们了解了 Python 的基本数据类型和运算符。然而,一个真正的程序不仅仅是按顺序执行一系列指令。我们需要能够根据不同的情况做出决策,或者重复执行某些任务。这就是 控制流程的作用。

本篇博客将深入讲解 Python 中用于控制流程的关键结构:条件语句 (if, elif, else) 用于决策,循环 (for, while) 用于重复,以及 循环控制 (break, continue) 用于微调循环行为。

1. 条件语句 (if, elif, else)

条件语句允许你根据一个或多个条件的真假来决定执行哪部分代码。Python 使用 ifelif(else if 的缩写)和 else 关键字来构建条件判断。

核心概念: Python 使用缩进来表示代码块的归属。每个条件语句(if, elif, else)后面都必须有一个冒号 :, 并且其下属于该条件的代码块必须进行相同的缩进

1.1 if 语句

if 语句是最简单的条件判断,如果条件为 True,就执行 if 后面的代码块。

age = 20
if age >= 18:print("你已经成年了。")print("可以进入。")
print("这是 if 语句外面的代码,总是会执行。")

输出:

你已经成年了。
可以进入。
这是 if 语句外面的代码,总是会执行。

如果 age 小于 18,if 后面的代码块就不会执行。

1.2 if…else 语句

if...else 语句提供了两个分支:如果 if 的条件为 True,执行 if 块;否则(即条件为 False),执行 else 块。

temperature = 25
if temperature > 30:print("天气很热!")
else:print("天气不错。")

输出:

天气不错。

如果 temperature 是 35,输出就会是 “天气很热!”。

1.3 if…elif…else 语句

elif(else if)用于检查多个条件。Python 会从上到下依次检查 ifelif 的条件。一旦找到一个条件为 True,就会执行相应的代码块,然后跳过剩余的 elifelse 块。只有当所有 ifelif 的条件都为 False 时,才会执行 else 块(如果存在的话)。

score = 85
if score >= 90:print("成绩优秀!")
elif score >= 80: # 如果上面的条件不成立,再检查这个条件print("成绩良好。")
elif score >= 60: # 如果上面的条件都不成立,再检查这个条件print("成绩及格。")
else: # 如果所有条件都不成立print("成绩不及格。")

输出:

成绩良好。

你可以有任意数量的 elif 块。else 块是可选的,最多只能有一个。

1.4 条件表达式的“真值”

回顾我们学过的布尔类型。在条件语句中,ifelif 后面的表达式会被 Python 解释为布尔值。还记得吗?0None、空字符串 ""、空列表 []、空字典 {}、空集合 set() 等都被视为 False (Falsy),其他大多数值都被视为 True (Truthy)。

my_list = []
if my_list: # 检查列表是否为空print("列表不为空")
else:print("列表为空")

输出:

列表为空
1.5 嵌套条件语句

条件语句可以嵌套。这意味着在一个 ifelse 块内部,可以包含另一个完整的条件语句。

is_authenticated = True
is_admin = Falseif is_authenticated:print("用户已登录。")if is_admin:print("欢迎,管理员!")else:print("欢迎,普通用户。")
else:print("请登录。")

输出:

用户已登录。
欢迎,普通用户。

2. 循环 (Loops)

循环用于重复执行一段代码。Python 提供了两种主要的循环结构:for 循环和 while 循环。

2.1 for 循环

for 循环用于遍历任何可迭代对象(如列表、元组、字符串、字典、集合等)中的元素。它会依次将可迭代对象中的每个元素赋值给循环变量,并执行循环体。

# 遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:print(fruit)

输出:

apple
banana
cherry
# 遍历字符串
for char in "Python":print(char)

输出:

P
y
t
h
o
n
# 遍历字典 (默认遍历键)
person = {"name": "Alice", "age": 30, "city": "New York"}
for key in person:print(key) # 输出键print(person[key]) # 使用键访问值

输出(顺序可能不同):

name
Alice
age
30
city
New York

遍历字典的更常用方式: 使用 .keys() (遍历键)、.values() (遍历值) 或 .items() (遍历键值对元组)。

for key in person.keys(): # 遍历键print("键:", key)for value in person.values(): # 遍历值print("值:", value)for key, value in person.items(): # 遍历键值对元组print(f"键: {key}, 值: {value}")
2.2 range() 函数

range() 函数是一个非常常用的工具,用于生成一个整数序列,它经常与 for 循环一起使用,以便按指定次数循环。

range() 的用法:

  • range(stop): 生成从 0 到 stop-1 的整数序列。
  • range(start, stop): 生成从 startstop-1 的整数序列。
  • range(start, stop, step): 生成从 startstop-1 的整数序列,步长为 step
# 循环 5 次 (从 0 到 4)
for i in range(5):print(f"循环次数 (从0开始): {i}")

输出:

循环次数 (从0开始): 0
循环次数 (从0开始): 1
循环次数 (从0开始): 2
循环次数 (从0开始): 3
循环次数 (从0开始): 4
# 循环从 2 到 6 (不包含 7)
for i in range(2, 7):print(f"当前数字: {i}")

输出:

当前数字: 2
当前数字: 3
当前数字: 4
当前数字: 5
当前数字: 6
# 循环从 10 到 0 (不包含 -1),步长为 -2
for i in range(10, -1, -2):print(f"倒计数: {i}")

输出:

倒计数: 10
倒计数: 8
倒计数: 6
倒计数: 4
倒计数: 2
倒计数: 0
2.3 while 循环

while 循环会在指定的条件为 True 时重复执行代码块。它会先检查条件,如果为 True,则执行循环体,然后再次检查条件,直到条件变为 False

count = 0
while count < 5:print(f"计数: {count}")count += 1 # 每次循环后递增计数器
print("循环结束。")

输出:

计数: 0
计数: 1
计数: 2
计数: 3
计数: 4
循环结束。

重要:while 循环中,务必确保循环体内部会改变某些条件,使得循环条件最终能变为 False,否则会导致无限循环

# 这是一个无限循环的例子 (请小心运行或避免运行)
# i = 0
# while i < 5:
#     print("我会永远打印这句话!")
#     # i 没有改变,条件永远为 True
# 要停止无限循环,通常在终端按 Ctrl+C

何时使用 for vs while?

  • 如果你知道需要遍历一个序列或按照固定次数重复,通常使用 for 循环 (确定次数循环)。
  • 如果你需要在某个条件保持 True 时重复执行,而你不知道具体需要循环多少次,通常使用 while 循环 (不确定次数循环)。

3. 循环控制 (break, continue)

breakcontinue 语句可以改变循环的正常执行流程。

3.1 break 语句

break 语句会立即终止最内层的循环(forwhile),并跳出循环体,继续执行循环后面的代码。

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for num in numbers:if num == 5:print("找到 5 了,退出循环!")break # 找到 5 后立即退出 for 循环print(f"当前数字: {num}")
print("循环外的代码")

输出:

当前数字: 1
当前数字: 2
当前数字: 3
当前数字: 4
找到 5 了,退出循环!
循环外的代码
3.2 continue 语句

continue 语句会跳过当前循环的剩余代码,直接进入下一次迭代。

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for num in numbers:if num % 2 == 0: # 如果是偶数print(f"跳过偶数: {num}")continue # 跳过当前迭代的剩余部分,进入下一次循环print(f"当前是奇数,处理: {num}")
print("循环结束。")

输出:

当前是奇数,处理: 1
跳过偶数: 2
当前是奇数,处理: 3
跳过偶数: 4
当前是奇数,处理: 5
跳过偶数: 6
当前是奇数,处理: 7
跳过偶数: 8
当前是奇数,处理: 9
循环结束。

4. 循环中的 else 块 (了解)

for 循环和 while 循环都可以有一个可选的 else 块。这个 else 块会在循环正常完成(即没有遇到 break 语句)时执行。

# for 循环的 else
for i in range(3):print(f"Loop {i}")
else:print("循环正常结束。") # 循环完整执行,没有 break

输出:

Loop 0
Loop 1
Loop 2
循环正常结束。
# 带有 break 的 for 循环的 else
for i in range(5):if i == 2:print("遇到 break")breakprint(f"Loop {i}")
else:print("循环正常结束。") # 不会执行,因为遇到了 break

输出:

Loop 0
Loop 1
遇到 break

while 循环的 else 块工作方式类似。这个特性在查找元素或验证循环是否完全遍历时可能有用。

总结

控制流程是构建动态程序的基础。我们学习了:

  • 条件语句 (if, elif, else):根据条件执行不同的代码分支。
  • 循环 (for, while):重复执行代码块。
  • range() 函数:配合 for 循环生成数字序列进行计数。
  • 循环控制 (break, continue):改变循环的正常执行流程。
  • 了解了循环可选的 else 块。

掌握这些结构,你就可以编写出能够响应不同情况并处理重复任务的更复杂的程序了。

练习题

尝试独立完成以下练习题,并通过答案进行对照:

  1. 条件语句:

    • 编写一个程序,接收用户输入一个数字,判断它是正数、负数还是零,并打印相应信息。
    • 编写一个程序,接收用户输入一个年份,判断它是否是闰年(能被 4 整除但不能被 100 整除,或者能被 400 整除),并打印结果。
  2. for 循环:

    • 使用 for 循环遍历字符串 “Programming is fun!”,并打印出每个字符。
    • 创建一个列表 numbers = [10, 20, 30, 40, 50],使用 for 循环遍历并打印出列表中的每一个数字。
    • 使用 for 循环和 range() 函数打印从 1 到 10 的所有数字。
    • 使用 for 循环和 range() 函数打印从 10 到 1 的所有数字。
  3. while 循环:

    • 使用 while 循环计算并打印从 1 加到 100 的总和。
    • 编写一个 while 循环,模拟一个简单的猜数字游戏:程序预设一个数字(例如 secret_number = 7),让用户不断输入猜测的数字,直到猜对为止。每猜测一次,提示是“猜大了”、“猜小了”还是“猜对了”。
  4. 循环控制 (break, continue):

    • 使用 for 循环遍历一个数字列表,当遇到数字 7 时,打印“找到 7,退出循环”,然后使用 break 立即停止循环。
    • 使用 for 循环遍历从 1 到 20 的数字,但跳过所有能被 3 整除的数字,只打印其他数字。
  5. 综合应用:

    • 创建一个包含学生分数的列表。使用 for 循环和 if 语句,统计有多少个分数是及格的(假设 60 分及格)。
    • 编写一个程序,接收用户输入一个正整数 n,使用 while 循环计算 n 的阶乘(n! = n * (n-1) * … * 1)。

练习题答案

1. 条件语句:

# 1.1 判断正负零
num = float(input("请输入一个数字: "))
if num > 0:print("这是一个正数。")
elif num < 0:print("这是一个负数。")
else:print("这是零。")# 1.2 判断闰年
year = int(input("请输入一个年份: "))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):print(f"{year} 年是闰年。")
else:print(f"{year} 年不是闰年。")

2. for 循环:

# 2.1 遍历字符串
my_string = "Programming is fun!"
for char in my_string:print(char)# 2.2 遍历列表
numbers = [10, 20, 30, 40, 50]
for num in numbers:print(num)# 2.3 打印 1 到 10
for i in range(1, 11): # range(start, stop) 包含 start,不包含 stopprint(i)# 2.4 打印 10 到 1
for i in range(10, 0, -1): # range(start, stop, step) 步长为 -1print(i)

3. while 循环:

# 3.1 计算 1 加到 100 的总和
total = 0
count = 1
while count <= 100:total += countcount += 1
print(f"1 加到 100 的总和是: {total}")# 3.2 猜数字游戏
import random # 导入 random 模块以生成随机数secret_number = random.randint(1, 100) # 生成 1 到 100 之间的随机整数
guess = 0 # 初始化猜测数字
print("欢迎来到猜数字游戏!我已经想好了一个 1 到 100 之间的数字。")while guess != secret_number:try:guess = int(input("请输入你的猜测: "))if guess > secret_number:print("猜大了,再试试!")elif guess < secret_number:print("猜小了,再试试!")else:print("恭喜你,猜对了!")except ValueError:print("无效输入,请输入一个整数。")print("游戏结束。")

4. 循环控制 (break, continue):

# 4.1 使用 break 查找并退出
number_list = [1, 3, 5, 7, 9, 11]
for num in number_list:if num == 7:print("找到 7,退出循环")break # 立即终止循环print(f"当前数字: {num}")
print("break 后的代码")# 4.2 使用 continue 跳过能被 3 整除的数字
for i in range(1, 21): # 从 1 到 20if i % 3 == 0: # 如果能被 3 整除continue # 跳过当前循环的剩余部分,直接进入下一轮迭代print(f"打印数字: {i}") # 只有不能被 3 整除的数字会执行到这里
print("continue 后的代码")

5. 综合应用:

# 5.1 统计及格分数
student_scores = [75, 58, 90, 60, 45, 88, 59, 72]
passing_score = 60
passed_count = 0for score in student_scores:if score >= passing_score:passed_count += 1print(f"总共有 {len(student_scores)} 个学生分数。")
print(f"其中有 {passed_count} 个分数达到或超过 {passing_score} 分。")# 5.2 计算阶乘
n = int(input("请输入一个正整数计算阶乘: "))if n < 0:print("负数没有阶乘。")
elif n == 0:print("0 的阶乘是 1。")
else:factorial = 1count = nwhile count > 0:factorial *= countcount -= 1print(f"{n} 的阶乘是 {factorial}")

创作不易,请大家点赞加收藏,关注我,持续更新教程!

相关文章:

Python 基础语法与数据类型(六) - 条件语句、循环、循环控制

文章目录 1. 条件语句 (if, elif, else)1.1 if 语句1.2 if...else 语句1.3 if...elif...else 语句1.4 条件表达式的“真值”1.5 嵌套条件语句 2. 循环 (Loops)2.1 for 循环2.2 range() 函数2.3 while 循环 3. 循环控制 (break, continue)3.1 break 语句3.2 continue 语句 4. 循…...

使用 CDN 在国内加载本地 PDF 文件并处理批注:PDF.js 5.x 实战指南

PDF.js 是一个强大的开源 JavaScript 库&#xff0c;用于在 Web 浏览器中渲染 PDF 文件。它由 Mozilla 开发&#xff0c;能够将 PDF 文档绘制到 HTML5 Canvas 或 SVG 上&#xff0c;无需任何本机代码或浏览器插件。对于许多需要在网页中展示 PDF 内容的应用场景来说&#xff0c…...

一些模型测试中的BUG和可能解决方法

一些模型测试中的BUG和可能解决方法 模型一直重复反馈相同内容的问题查找思路 如下顺序也是排查优先级 检查提示词和上下文,保证提示词中没有类似的要求,然后再查看上下文是不是占满了token长度。检查一下选择的model是不是本身就有这样的问题尝试增加repeat_penalty(1.05、…...

dotnet core c#调用Linux c++导出函数

1.声明C++导出函数 platform_export.h // // Created by dev on 5/6/25. //#ifndef PLATFORM_EXPORT_H #define PLATFORM_EXPORT_H #if defined(_WIN32)#ifdef LIB_EXPORTS#define LIB_API __declspec(dllimport)#else#define LIB_API __declspec(dllimport)#endif #else#ifde…...

多智能体学习CAMEL-调用api

可选模型范围 在ModelScope中的模型库中选择推理 API-Inference &#xff0c;里面的模型都可以选择&#xff0c;我们可以体验到最新的使用DeepSeek-R1数据蒸馏出的Llama-70B模型。 1.2.2 使用API调用模型 这里我们使用CAMEL中的ChatAgent模块来简单调用一下模型&#xff0c;…...

C++八股 —— vector底层

vector底层为动态数组 类构成 class vector : protected _Vector_base_Vector_base: _M_start&#xff1a;容器元素开始的位置_M_finish&#xff1a;容器元素结束的位置_M_end_of_storage&#xff1a;动态内存最后一个元素的下一个位置 构造函数 无参构造 根据性能优先规则&a…...

宁德时代区块链+数字孪生专利解析:去中心化身份认证重构产业安全底座

引言&#xff1a;当动力电池巨头瞄准数字孪生安全 2025年5月6日&#xff0c;金融界披露宁德时代未来能源&#xff08;上海&#xff09;研究院与母公司宁德时代新能源科技股份有限公司联合申请的一项关键专利——“身份验证方法、系统、电子设备及存储介质”。这项技术将区块链…...

1.微服务概念

1.单体、分布式、集群 先理解单体、集群、分布式这些概念 1.单体 一个系统业务量很小的时候,所有的代码都放在一个项目中&#xff0c;然后这个项目部署在一台服务器上就好了。整个项目所有的服务都由这台服务器提供。这就是单机结构. 1.1 优点 单体应用开发简单,部署测试简单 …...

基于SSM实现的健身房系统功能实现八

一、前言介绍&#xff1a; 1.1 项目摘要 随着社会的快速发展和人们健康意识的不断提升&#xff0c;健身行业也在迅速扩展。越来越多的人加入到健身行列&#xff0c;健身房的数量也在不断增加。这种趋势使得健身房的管理变得越来越复杂&#xff0c;传统的手工或部分自动化的管…...

Spring Boot配置文件详解:从入门到精通

一、Spring Boot配置文件概述 Spring Boot配置文件是应用程序的核心配置管理工具&#xff0c;它允许开发者在不修改代码的情况下调整应用行为。配置文件主要有两种格式&#xff1a; 文件类型优点缺点适用场景application.properties简单直观&#xff0c;键值对形式不支持复杂…...

Webug4.0靶场通关笔记24- 第29关Webshell爆破

目录 一、Webshell爆破原理分析 二、第29关webshell爆破渗透实战 1.环境搭建 2.打开靶场 3.暴力破解 &#xff08;1&#xff09;bp开启抓包模式 &#xff08;2&#xff09;输入密码12并抓包 &#xff08;3&#xff09;配置position &#xff08;4&#xff09;配置payl…...

CMA认证对象?CMA评审依据,CMA认证好处

CMA认证对象 CMA&#xff08;中国计量认证&#xff0c;China Metrology Accreditation&#xff09;的认证对象主要是第三方检测机构和实验室&#xff0c;包括&#xff1a; 独立检测机构&#xff1a;如环境监测站、产品质量检验所、食品药品检测机构等。 企业内部实验室&#…...

在 MyBatis 中实现控制台输出 SQL 参数

在 MyBatis 中实现控制台输出 SQL 参数&#xff0c;可通过以下方案实现&#xff1a; # 一、使用 MyBatis-Plus 的 SqlLogInterceptor&#xff08;推荐&#xff09; ‌适用场景‌&#xff1a;项目已集成 MyBatis-Plus&#xff08;3.5.3版本&#xff09; ‌配置步骤‌&#xff…...

深入解析网络联通性检测:ping 与 tracert 的原理、用法及实战应用

深入解析网络联通性检测&#xff1a;ping 与 tracert 的原理、用法及实战应用 在网络世界中&#xff0c;确保设备之间的联通性是一切网络服务正常运行的基础。无论是网络工程师排查故障&#xff0c;还是普通用户检查网络连接&#xff0c;ping和tracert&#xff08;在 Windows …...

LeetCode:101、对称二叉树

递归法&#xff1a; /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {…...

从生产事故看软件质量保障:开发规范落实与时间资源矛盾的深度探讨

“穷则变&#xff0c;变则通&#xff0c;通则久。” —— 《周易系辞下》。在困境中要勇于变革&#xff0c;正如软件团队在遇到生产事故后&#xff0c;需要改变现有的开发方式和流程&#xff0c;以适应新的挑战。 在项目推进过程中&#xff0c;一场生产事故如晴天霹雳般袭来&am…...

Redis 常见数据类型

Redis 常见数据类型 一、基本全局命令详解与实操 1. KEYS 命令 功能&#xff1a;按模式匹配返回所有符合条件的键&#xff08;生产环境慎用&#xff0c;可能导致阻塞&#xff09;。 语法&#xff1a; KEYS pattern 模式规则&#xff1a; h?llo&#xff1a;匹配 hello, ha…...

TextRNN 模型实现微博文本情感分类

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;文本情感分类是一项极具应用价值的任务。它能帮助企业分析用户反馈、社交媒体舆情监测等。本文将通过一段实际代码&#xff0c;带大家了解如何利用 PyTorch 框架和 TextRNN 模型&#xff0c;完成微博文本的情感分类工…...

SAP note 3565626 : Baltimore CyberTrust 根证书即将过期

SAP note 3565626 &#xff1a; Baltimore CyberTrust 根证书即将过期 20250512 2025年5月9日 症状 您已收到来⾃ SAP Integration Suite/Cloud Integration 服务的通知邮件&#xff0c; 建议 Baltimore CyberTrust 根证书将于 2025 年 5 ⽉ 12 ⽇ 过期&#xff0c;其中 Balt…...

4.3 Thymeleaf案例演示:图书管理

本项目通过整合 Thymeleaf 实现了一个简单的图书管理系统。系统功能包括查询所有图书、按条件查询图书、根据用户角色显示按钮以及借阅图书。通过 Spring Boot 框架搭建项目&#xff0c;创建了用户和图书的实体类&#xff0c;以及图书的数据访问类和控制器。在 Thymeleaf 模板中…...

STM32GPIO输入实战-key按键easy_button库移植

STM32GPIO输入实战-key按键easy_button库移植 一&#xff0c;ebtn介绍二&#xff0c;ebtn移植三&#xff0c;组件库的思想组成1. 事件驱动 (Event-Driven) &#x1f6ce;️ —— 像按门铃2. 状态机 (State Machine) &#x1f6a6; —— 像红绿灯3. 回调函数 (Callback Function…...

【递归、搜索和回溯】递归、搜索和回溯介绍及递归类算法例题

个人主页 &#xff1a; zxctscl 专栏 【C】、 【C语言】、 【Linux】、 【数据结构】、 【算法】 如有转载请先通知 文章目录 递归、搜索和回溯递归搜索VS 深度优先遍历 VS 深度优先搜索 VS 宽度优先遍历 VS 宽度优先搜索 VS 暴搜回溯与剪枝 1 面试题 08.06. 汉诺塔问题1.1 分析…...

JDK8 HashMap红黑树退化为链表的机制解析

目录 1、数据结构&#xff1a; 2、Fail-Fast机制 2.1、核心作用 2.2、实现原理 2.3、触发场景 2.4、实现细节 2.5、对比 2.6、注意事项 3、核心结论 4、转化安全机制 4.1. 触发场景 4.2. 转换过程 4.3. 并发安全机制 5、设计原因 5.1. 性能权衡 5.2. 空间局部性…...

【基础】模型上下文协议(Model Context Protocol, MCP)根本原理与工作机制详解

一、MCP的根本原理 模型上下文协议&#xff08;MCP&#xff09;是一种标准化接口协议&#xff0c;旨在解决AI系统&#xff08;尤其是大型语言模型&#xff0c;LLM&#xff09;与外部工具、数据源之间的交互碎片化问题。其核心原理可以概括为以下三点&#xff1a; 统一接口抽象…...

霸王茶姬微信小程序自动化签到系统完整实现解析

霸王茶姬微信小程序自动化签到系统完整实现解析 技术栈&#xff1a;Node.js 微信小程序API MD5动态签名 一、脚本全景架构 功能模块图 #mermaid-svg-0vx5W2xo0IZWn6mH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…...

北斗导航 | RTKLib中重难点技术,公式,代码

Rtklib 一、抗差自适应卡尔曼滤波1. **核心难点**2. **公式与代码实现**二、模糊度固定与LAMBDA算法1. **核心难点**2. **LAMBDA算法实现**3. **部分模糊度固定技术**三、伪距单点定位与误差修正1. **多系统多频点修正**2. **接收机钟差与系统间偏差**四、动态模型与周跳处理1.…...

p2p虚拟服务器

ZeroTier Central ✅ 推荐工具&#xff1a;ZeroTier&#xff08;免费、稳定、跨平台&#xff09; ZeroTier 可以帮你把多台设备&#xff08;无论是否跨网&#xff09;加入一个虚拟局域网&#xff0c;彼此间可以像在同一个 LAN 中通信&#xff0c;UDP 视频、文件传输、SSH 等都…...

Python 爬虫基础入门教程(超详细)

一、什么是爬虫&#xff1f; 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;又称网页蜘蛛&#xff0c;是一种自动抓取互联网信息的程序。爬虫会模拟人的浏览行为&#xff0c;向网站发送请求&#xff0c;然后获取网页内容并提取有用的数据。 二、Python爬虫的基本原…...

python实现点餐系统

使用python实现点餐系统的增加菜品及价格&#xff0c;删除菜品&#xff0c;查询菜单&#xff0c;点菜以及会员折扣价等功能。 代码&#xff1a; 下面展示一些 内联代码片。 # coding utf-8menu {拍黄瓜: 6, 小炒肉: 28, 西红柿炒蛋: 18, 烤鱼: 30, 红烧肉: 38, 手撕鸡: 45,…...

(三)毛子整洁架构(Infrastructure层/DapperHelper/乐观锁)

文章目录 项目地址一、Infrastructure Layer1.1 创建Application层需要的服务1. Clock服务2. Email 服务3. 注册服务 1.2 数据库服务1. 表配置Configurations2. Respository实现3. 数据库链接Factory实现4. Dapper的DataOnly服务实现5. 所有数据库服务注册 1.3 基于RowVersion的…...