零基础学习Python之循环详解:从入门到实践_我的学习Python记录11
零基础学习Python之循环详解:从入门到实践_我的学习Python记录11
一、前言
最近我在学习Python,发现很多编程概念和用法都让我感到陌生,尤其是循环这个概念。今天,我将分享我学到的循环知识,希望能帮助到和我一样的初学者。
二、循环的作用
循环是编程中用于重复执行代码块的结构,主要解决以下问题:
- 重复执行相同/相似操作(如批量处理数据)
- 遍历集合元素(如列表、字典)
- 实现持续运行直到满足特定条件
三、循环的分类
Python提供两种循环结构:
- while循环 - 基于条件判断的循环
- for循环 - 遍历可迭代对象的循环
四、while循环详解
1. 基本语法
while 条件表达式:循环体代码
2. 使用示例
# 示例1:计数器循环
count = 0 # 初始化计数器
while count < 5: # 当count小于5时执行循环print(f"这是第 {count+1} 次循环") # 打印当前循环次数count += 1 # 计数器加1# 输出结果:
# 这是第 1 次循环
# 这是第 2 次循环
# ...
# 这是第 5 次循环# 示例2:输入验证
password = "" # 初始化密码变量
while password != "123456": # 当密码不等于"123456"时执行循环password = input("请输入密码:") # 提示用户输入密码
print("登录成功!") # 循环结束后打印成功信息
3. 注意事项
- 必须设置循环终止条件,否则会无限循环
- 通过修改条件变量控制循环次数
- 可使用
Ctrl+C强制终止无限循环
五、break与continue
1. break语句
立即终止整个循环的执行
# 示例:遇到3时终止循环
num = 1 # 初始化变量
while num <= 5: # 当num小于等于5时执行循环if num == 3: # 如果num等于3break # 终止循环print(num) # 打印当前num值num += 1 # num加1# 输出结果:
# 1
# 2
2. continue语句
跳过当前循环,进入下一次迭代
# 示例:跳过偶数
num = 0 # 初始化变量
while num < 5: # 当num小于5时执行循环num += 1 # num加1if num % 2 == 0: # 如果num是偶数continue # 跳过本次循环print(num) # 打印当前num值# 输出结果:
# 1
# 3
# 5
六、嵌套循环
1. 基本结构
while 外层条件:while 内层条件:内层循环体外层循环体
2. 使用示例
# 打印九九乘法表
i = 1 # 外层循环变量
while i <= 9: # 外层循环条件j = 1 # 内层循环变量while j <= i: # 内层循环条件print(f"{j}×{i}={i*j}", end="\t") # 打印乘法表达式j += 1 # 内层循环变量加1print() # 换行i += 1 # 外层循环变量加1# 输出效果:
# 1×1=1
# 1×2=2 2×2=4
# 1×3=3 2×3=6 3×3=9
# ...
七、for循环详解
1. 基本语法
for 变量 in 可迭代对象:循环体代码
2. 使用示例
# 示例1:遍历列表
fruits = ["apple", "banana", "cherry"] # 定义一个水果列表
for fruit in fruits: # 遍历列表中的每个元素print(f"我喜欢吃{fruit}") # 打印当前水果# 示例2:遍历字符串
for char in "Python": # 遍历字符串中的每个字符print(char, end="-") # 打印字符并用"-"分隔# 示例3:配合range使用
for num in range(3, 8, 2): # 生成3到8(不含)的整数,步长为2print(num) # 打印当前数字
3. range()函数详解
range(stop):生成0到stop-1的整数range(start, stop)range(start, stop, step)
八、循环对比总结
| 特征 | while循环 | for循环 |
|---|---|---|
| 使用场景 | 不确定循环次数时使用 | 已知迭代次数/遍历集合时使用 |
| 条件检查 | 每次迭代前检查条件 | 自动处理迭代次数 |
| 典型应用 | 用户输入验证、游戏主循环 | 遍历数据集合、固定次数循环 |
九、实战练习
练习题:打印菱形图案
使用循环打印如下菱形图案:
*************************
提示:
- 使用
for循环和range函数 - 外层循环控制行数,内层循环控制空格和星号
- 注意上下部分的对称性
以下是打印菱形图案的完整代码及其详细解释:
# 定义菱形的高度(上半部分的行数)
height = 4# 打印上半部分
for i in range(height): # 遍历每一行# 打印空格:每行的空格数为 height - i - 1for j in range(height - i - 1):print(" ", end="")# 打印星号:每行的星号数为 2 * i + 1for k in range(2 * i + 1):print("*", end="")# 换行print()# 打印下半部分
for i in range(height - 2, -1, -1): # 遍历每一行,从 height-2 到 0# 打印空格:每行的空格数为 height - i - 1for j in range(height - i - 1):print(" ", end="")# 打印星号:每行的星号数为 2 * i + 1for k in range(2 * i + 1):print("*", end="")# 换行print()
代码运行结果
*************************
代码解析
-
上半部分:
- 外层循环控制行数,从
0到height-1。 - 内层第一个循环打印空格,空格数随行数增加而减少。
- 内层第二个循环打印星号,星号数随行数增加而增加。
- 外层循环控制行数,从
-
下半部分:
- 外层循环控制行数,从
height-2到0。 - 内层第一个循环打印空格,空格数随行数减少而增加。
- 内层第二个循环打印星号,星号数随行数减少而减少。
- 外层循环控制行数,从
关键点
- 空格数:
height - i - 1,确保星号居中。 - 星号数:
2 * i + 1,确保星号数量呈奇数增长。 - 循环范围:下半部分的循环范围是
range(height - 2, -1, -1),确保对称性。
扩展练习
- 修改代码,让用户输入菱形的高度。
- 尝试打印空心菱形(只打印边框)。
- 使用
while循环实现相同的功能。
十、总结
通过这篇博文,我们学习了Python中while循环和for循环的基本用法,以及如何通过break和continue控制循环流程。循环是编程中非常重要的工具,能够帮助我们高效处理重复性任务。希望这篇博文能帮助你更好地理解循环的概念,并在实际编程中灵活运用!
如果你有任何问题或建议,欢迎在评论区留言!让我们一起进步! 🚀
相关文章:
零基础学习Python之循环详解:从入门到实践_我的学习Python记录11
零基础学习Python之循环详解:从入门到实践_我的学习Python记录11 一、前言 最近我在学习Python,发现很多编程概念和用法都让我感到陌生,尤其是循环这个概念。今天,我将分享我学到的循环知识,希望能帮助到和我一样的初…...
电子电路中,正负双电源供电的需求原因
1. 允许信号双向摆动 - **交流信号的处理**:许多电路(如音频放大器、运算放大器)需要处理正负交替变化的交流信号(例如声音信号、传感器输出)。如果仅用单正电源(如12V),信号的“负…...
ROS环境搭建
ROS首次搭建环境 注:以下内容都是在已经安装好ros的情况下如何搭建workplace 一、创建工作空间二、创建ROS包三、注意 注:以下内容都是在已经安装好ros的情况下如何搭建workplace 如果没有安装好,建议鱼香ros一步到位:鱼香ROS 我也是装了好久…...
java后端开发day26--常用API(一)
(以下内容全部来自上述课程) 1.Math 1.简单介绍 是一个帮助我们用于进行数学计算的工具类私有化构造方法,所有的方法都是静态的 2.常用方法 不要背,忘了就查文档。 3.练习题 1.判断一个数是否为质数(优化版&am…...
SpringBoot接口自动化测试实战:从OpenAPI到压力测试全解析
引言:接口测试的必要性 在微服务架构盛行的今天,SpringBoot项目的接口质量直接影响着系统稳定性。本文将分享如何通过自动化工具链实现接口的功能验证与性能压测,使用OpenAPI规范打通测试全流程,让您的接口质量保障体系更加完备。…...
分布式中间件:Redis介绍
目录 Redis 概述 Redis 的特点 高性能 丰富的数据结构 持久化 分布式特性 简单易用 Redis 的数据结构 字符串(String) 哈希(Hash) 列表(List) 集合(Set) 有序集合&…...
Python中文自然语言处理库SnowNLP
SnowNLP 介绍 SnowNLP 是一个基于 Python 的中文自然语言处理库,专为处理中文文本而设计。它受到 TextBlob 的启发,但与 TextBlob 不同的是,SnowNLP 没有使用 NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字…...
Linux-计算机网络.udp
1.收发函数: read()/write () ///通用文件读写,可以操作套接字。 recv(,0) /send(,0) ///TCP 常用套机字读写 recvfrom()/sendto() ///UDP 常用套接字读写 ssize_t recv(int sockfd, void *buf, size_t len, …...
【大厂AI实践】清华:清华古典诗歌自动生成系统“九歌”的算法
【大厂AI实践】清华:清华古典诗歌自动生成系统“九歌”的算法 🌟 嗨,你好,我是 青松 ! 🌈 自小刺头深草里,而今渐觉出蓬蒿。 文章目录 **01 自动作诗缘起****1. 诗歌自动写作** **02 九歌的模型…...
Docker安装Postgres_16数据库
PostgreSQL简介 PostgreSQL 是一个功能强大、开源的关系型数据库管理系统(RDBMS),以其可靠性、功能丰富性和可扩展性而闻名。它支持复杂的查询、事务完整性、并发控制以及多种数据类型和扩展功能,适用于各种规模的应用程序; 适用传…...
VSCode 移除EmmyLua插件的红色波浪线提示
VSCode 中安装插件EmmyLua,然后打开lua文件的时候,如果lua代码引用了C#脚本的变量,经常出现 “undefined global variable: UnityEngineEmmyLua(undefined-global)” 的红色波浪线提示,这个提示看着比较烦人,我们可以通…...
快慢指针【等分链表、判断链表中是否存在环】
一、等分链表:找到链表的中间节点 Java 实现 class ListNode {int val;ListNode next;ListNode(int val) {this.val val;this.next null;} }public class MiddleOfLinkedList {public ListNode findMiddleNode(ListNode head) {if (head null) {return null;}L…...
doris:阿里云 DLF
阿里云 Data Lake Formation(DLF) 是阿里云上的统一元数据管理服务。兼容 Hive Metastore 协议。 什么是 Data Lake Formation 因此我们也可以和访问 Hive Metastore 一样,连接并访问 DLF。 连接 DLF 创建 DLF Catalog CREATE CATALOG dlf PROPERTIES ("…...
大模型巅峰对决:DeepSeek vs GPT-4/Claude/PaLM-2 全面对比与核心差异揭秘
文章目录 一、架构设计深度解剖1.1 核心架构对比图谱1.2 动态MoE架构实现架构差异分析表 二、训练策略全面对比2.1 训练数据工程对比2.2 分布式训练代码对比DeepSeek混合并行实现GPT-4 Megatron实现对比 2.3 关键训练参数对比 三、性能表现多维评测3.1 基准测试全景对比3.2 推理…...
C语言基础知识02
格式化输入输出 函数名:printf() 格式控制符:%c //把数据转换成字符型 cahr %d //把数据转换为有符号十进制整型 int short %ld // long %f //把数据转成单精度浮点型 flot %d //double %s …...
Linux的进程观:简单性如何成就强大性(三)
1. 环境变量 1.1. 基本概念 环境变量(environment variables)⼀般是指在操作系统中⽤来指定操作系统运⾏环境的⼀些参数。 如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪⾥,但是照样可以链接…...
element-ui infiniteScroll 组件源码分享
简单分享 infiniteScroll 组件源码,主要有以下四个方面: 1、infiniteScroll 页面结构。 2、infiniteScroll 组件属性。 3、组件内部的方法。 4、存在的问题。 一、infiniteScroll 页面结构: 二、页面属性。 2.1 infinite-scroll-disab…...
vulnhub靶场之【digitalworld.local系列】的bravery靶机
前言 靶机:digitalworld.local-bravery,IP地址为192.168.10.8 攻击:kali,IP地址为192.168.10.6 kali采用VMware虚拟机,靶机采用virtualbox虚拟机,网卡都为桥接模式 这里官方给的有两种方式,…...
SpringBoot 整合mongoDB并自定义连接池,实现多数据源配置
要想在同一个springboot项目中使用多个数据源,最主要是每个数据源都有自己的mongoTemplate和MongoDbFactory。mongoTemplate和MongoDbFactory是负责对数据源进行交互的并管理链接的。 spring提供了一个注解EnableMongoRepositories 用来注释在某些路径下的MongoRepo…...
部署Joplin私有云服务器postgres版-docker compose
我曾经使用过一段时间 Joplin,官方版本是收费的,而我更倾向于将数据掌握在自己手中。因此,在多次权衡后,我决定自己搭建 Joplin 服务器并进行尝试。 个人搭建的版本与数据库直连,下面是使用 Docker Compose 配置数据库…...
C++20 标准化有符号整数:迈向更可预测的整数运算
文章目录 一、背景:为什么需要标准化?二、2 的补码:原理与优势(一)2 的补码原理(二)2 的补码的优势 三、C20 的变化:明确 2 的补码四、如何利用这一特性优化代码(一&…...
npm ERR! code 128 npm ERR! An unknown git error occurred
【问题描述】 【问题解决】 管理员运行cmd(右键window --> 选择终端管理员) 执行命令 git config --global url.“https://”.insteadOf ssh://git cd 到项目目录 重新执行npm install 个人原因,这里执行npm install --registryhttps:…...
【uniapp】子组件和父组件双向绑定,vue3已废除sync写法,v-model代替
vue3已废除sync写法,v-model代替 实现state的值可以从子组件传递给父组件,也可以从父组件传递给子组件 文件地址pages/about/about.vue <template><view><button size"mini" click"clickBtn">开启{{mystate}}<…...
playbin之Source插件加载流程源码剖析
之前我们有讲解过uridecodebin的setup_source中会创建source插件,关键函数: /* create and configure an element that can handle the uri */ source gen_source_element (decoder); /** Generate and configure a source element.** Returns: (tra…...
泵吸式激光可燃气体监测仪:快速精准守护燃气管网安全
在城市化进程加速的今天,燃气泄漏、地下管网老化等问题时刻威胁着城市安全。如何实现精准、高效的可燃气体监测,守护“城市生命线”,成为新型基础设施建设的核心课题。泵吸式激光可燃气体监测仪,以创新科技赋能安全监测࿰…...
Stiring-PDF:开源免费的PDF文件处理软件
Stiring-PDF是一款开源免费且比较好用的PDF文件处理工具。 Stiring-PDF官网网址为:https://www.stiringpdf.com/。Stiring-PDF是一款专业的PDF文件处理工具,支持Windows和macOS操作系统;提供丰富的PDF编辑和转换功能,适用于日常工…...
Cherno C++ P60 为什么不用using namespace std
这篇文章我们讲一下之前写代码的时候的一个习惯,也就是不使用using namespace std。如果我们接触过最早的C教程,那么第一节课都会让我们写如下的代码: #include<iostream>using namespace std;int main() {cout << "Hello …...
大模型微调实验记录(一)数据探索
文章目录 概要整体架构流程前期的技术探索技术构造技术细节小结 概要 根据之前博客使用的docker技术,如果换公司了,我可能就要重新搭建环境了,哎,公司没资源给我,给我一台带不走的电脑,哎,这可…...
JavaWeb-社区版Idea安装配置
idea配置 一,下载idea社区版 百度搜索IntelliJ IDEA,点击下载链接。 二,全局配置 前提安装好jdk,这一步不再赘述。进入引导页,把可以配置的东西都先配置上,这个配置是全局的,省的之后&#…...
iOS 实现UIButton自动化点击埋点
思路:我们HOOK UIControl的 addtarget:action:forControlEvents方法,交换UIControl的 addtarget:action:forControlEvents 方法的实现, 在交换的方法中添加原来响应的同时,再添加一个埋点响应,该响应方法实现了点击埋点…...
