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

【Python学习笔记】循环

Python中有两种类型的循环: while 循环 和 for 循环

1. while 循环

while循环是: 检查一个条件表达式,只要条件表达式计算结果为True 时, 就执行下面缩进的代码。

如此反复,直到条件表达式计算结果为False时,结束 循环。

比如:

command = input("请输入命令:")
while command != 'exit':print(f'输入的命令是{command}')command = input("请输入命令")

其中 while command != 'exit' 会判断用户输入的命令 (command 变量) 是否等于字符串 'exit'

如果不等于, 就执行下面缩进的代码。下面缩进的代码就是循环体内的代码,还会再次让用户输入命令到变量command中。

如果等于字符串 'exit', 就结束循环。

如果用户输入的命令一直都不是字符串 'exit', 就会一直执行循环。


用 while 循环要注意 循环条件的设置,处理不当,有可能导致 循环的条件始终为True,循环永远不会结束,变成了死循环。

比如,我们要打印出 从 1 到 100 的数字,应该写成下面这样

i = 1
while i <= 100:print(i)i += 1

如果不小心,漏掉最后一句,变成

i = 1
while i <= 100:print(i)

这样 i 的值始终不变, 循环的条件 i <= 100 一直都是满足的,就变成死循环了。程序一直打印 i 值为 1 ,永不结束。

2. for 循环

for循环的用法

for 循环 通常是从一个sequence类型,比如 字符串、列表 或者 元组中 依次取出每个元素进行操作。

比如,我要打印出 一个学生年龄 列表中所有的学生信息, 可以这样写

studentAges = ['小王:17', '小赵:16', '小李:17', '小孙:16', '小徐:18']for student in studentAges:print(student)

注意,for student in studentAges 这里的 student 变量就依次代表了 studentAges里面的每一个元素,执行下面缩进的代码 print(student)

这里有5个学生的信息, 那么这个循环就执行了5次。

从循环的第1次到第5次,student 变量的值分别为:

'小王:17'
'小赵:16'
'小李:17'
'小孙:16'
'小徐:18'

所以上面的循环可以依次打印出上面的元素。


当然上面的例子用while循环也一样可以达到目的,就是稍微复杂一些

studentAges = ['小王:17', '小赵:16', '小李:17', '小孙:16', '小徐:18']idx = 0
while idx < len(studentAges):currentEle = studentAges[idx]print(currentEle)idx += 1

上面的代码里,我们用一个变量idx代表 列表当前元素的索引。 在循环体里面 每执行一次就 让idx 的值加1。 这样的循环,变量 currentEle就依次等于 列表里面的每个元素。

如果循环操作一个空列表,如下

for one in []:print(one)

循环体内的代码不会执行。

循环n次

开发程序时,我们经常需要 循环执行某段代码 n次

打印出100次,可以使用for 循环 和 一个内置类型 range ,如下所示

# range里面的参数100 指定循环100次
# 其中 n 依次为 0,1,2,3,4... 直到 99
for n in range(100):  print(n)      

注意:

和Python 2 不同, Python 3 中的range 并不是一个函数,不会返回一个数字列表。 Python 3 中的range 是一个 类,如果你想返回一个 从 0到99的数字列表, 可以这样写 : list(range(100))


range

range(100)传入1个参数。从0,1,2,3,4… 直到 99。

range(50,100)传入2个参数。从50… 直到 99。

range(50,100,5)传入3个参数。从50… 直到 99,步长为5。

print(list(range(100)))
print('--------------------------------')
print(list(range(50, 100)))
print('--------------------------------')
print(list(range(50, 100, 5)))$ python main.py
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
--------------------------------
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
--------------------------------
[50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

enumerate 函数

有的时候,在使用for循环从列表或者元组中遍历元素的时候,除了要获取每个元素,还需要得到每个元素在列表元组里面的索引。

比如,找出下面列表中年龄大于17岁的学员,打印出他们在列表中的索引

studentAges = ['小王:17', '小赵:16', '小李:18', '小孙:16', '小徐:18']

这时候可以使用 enumerate 函数,像下面这样

# '小王:17'.split(':') 分割字符串成一个列表['小王', '17']
# '小王:17'.split(':')[-1] 取分割后列表的最后一个元素 '17'
print('小王:17'.split(':')) # 输出 ['小王', '17']
print('小王:17'.split(':')[-1]) # 输出 17studentAges = ['小王:17', '小赵:16', '小李:17', '小孙:16', '小徐:18']# enumerate (studentAges) 每次迭代返回 一个元组
# 里面有两个元素,依次是 元素的索引和元素本身 
for idx, student in enumerate(studentAges):if int(student.split(':')[-1]) > 17:print(idx)
$ python main.py
['小王', '17']
17
0   小王:17
1   小赵:16
2   小李:17
3   小孙:16
4   小徐:18
4

3. break 终止循环

循环体内的代码在发现某种条件满足的时候,需要终止循环。可以使用关键字 break

while True:command = input("请输入命令:")if command == 'exit':breakprint(f'输入的命令是{command}')print('程序结束')

注意,解释器执行到 循环内的 break 语句,就会从循环while 退出,

接着执行while 循环下面的代码 print('程序结束')

break 对 for 循环也一样有效,如下:

for i in range(100):command = input("请输入命令:")if command == 'exit':breakprint(f'输入的命令是{command}')print('程序结束')

4. 函数中的 break 和 return

return 只能用在函数里面, 表示从函数中返回。代码主体部分是不能用return的。

函数中的循环体内的代码, 使用 return 和 break 都可以从循环中跳出。

但是,break 只是 跳出循环, 如果循环后面还有代码, 会进行执行。

return 则会从函数里面立即返回, 函数体内的后续任何代码都不执行了

5. continue

有时,我们循环体内的代码在发现某种条件满足的时候,不是要终止整个循环,而是只结束当前这一轮循环,后面还要继续循环的执行

while True:command = input("请输入命令:")if command == 'exit':breakif command == 'cont':continueprint(f'输入的命令是{command}')print('程序结束')

continue 只是当前这次循环结束,就是这次循环 continue 后面的代码不执行了, 后续的循环还要继续进行。

break 是结束整个循环。

6. 列表推导式

我们经常需要这样处理一个列表:把一个列表里面的每个元素, 经过相同的处理 ,生成另一个列表。

比如:一个列表1,里面都是数字,我们需要生成一个新的列表B,依次存放列表A中每个元素的平方

当然可以用for循环处理,像这样

list1 = [1,2,3,4,5,6]
list2 = []
for num in list1:list2.append(num*num)

Python还有更方便的语法,可以这样写

list1 = [1,2,3,4,5,6]
list2 = [num**2 for num in list1]

这种写法,通常叫做 列表推导式

就是把一个列表里面的每个元素经过简单的处理生成另一个列表的操作。

其中 for 前面的部分,就是要对取出的元素进行的处理操作, 上面的例子是计算平方。

相关文章:

【Python学习笔记】循环

Python中有两种类型的循环: while 循环 和 for 循环 1. while 循环 while循环是&#xff1a; 检查一个条件表达式&#xff0c;只要条件表达式计算结果为True 时&#xff0c; 就执行下面缩进的代码。 如此反复&#xff0c;直到条件表达式计算结果为False时&#xff0c;结束 循…...

1 如何入门TensorFlow

近年来人工智能的火爆吸引了很多人&#xff0c;网上相关的热门课程报名的人很多&#xff0c;但是坚持下去的人却少。那些晦涩的原理没有一定知识的积累很难能理解。 如果你对人工智能感兴趣&#xff0c;且想利用人工智能去实现某项功能&#xff0c;而不是对人工智能本身感兴趣&…...

QTday02(常用类、UI界面下的开发、信号与槽)

今日任务 1. 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#x…...

自然语言处理---RNN经典案例之使用seq2seq实现英译法

1 seq2seq介绍 1.1 seq2seq模型架构 seq2seq模型架构分析&#xff1a; seq2seq模型架构&#xff0c;包括两部分分别是encoder(编码器)和decoder(解码器)&#xff0c;编码器和解码器的内部实现都使用了GRU模型&#xff0c;这里它要完成的是一个中文到英文的翻译&#xff1a;欢迎…...

Python【判断列表的存在与否关系】

要求&#xff1a;使用列表判断一个列表是否在另外一个列表中 代码如下&#xff1a; list1 [1, 2, 6, 8, 7, 10, 5] print("列表1为&#xff1a;", list1) list2 [2, 6, 5, 10] print("列表2为&#xff1a;",list2) res False a 0 for i in list2:if …...

MyBatis篇---第三篇

系列文章目录 文章目录 系列文章目录一、如何执行批量插入?二、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?三、MyBatis实现一对一有几种方式?具体怎么操作的?一、如何执行批量插入? 首先,创建一个简单的insert语句: <insert id=”…...

uview1.0部分机型u-input组件禁用后无法触发click事件

最近&#xff0c;线上的一个 App 收到用户反馈&#xff0c;输入框禁用状态下点击无法拉起模态框。找了一下身边可用机型进行了测试&#xff0c;起初所有机型都没有复现这个问题&#xff0c;突然有一天 Redmi K30S Ultra 出现了异常&#xff0c;点击输入框无法触发点击事件&…...

Arduino IDE + Esp32 Cam + 实现视频流 + 开发环境部署

1、开发环境 Arduino ide 版本&#xff1a;2.2.1 esp32工具&#xff1a;2.0.5 示例代码 #include "esp_camera.h" #include <WiFi.h>// // WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality // Ensure ESP32 Wrover Modu…...

Day4力扣打卡

打卡记录 同积元组&#xff08;哈希表 排列组合&#xff09; 链接 思路&#xff1a;用哈希表将数组中出现的两不同数乘积依次记录&#xff0c;将出现两次以上的乘积组通过排列组合计算总情况个数。 class Solution { public:int tupleSameProduct(vector<int>& num…...

Paper Reading:《Consistent-Teacher: 减少半监督目标检测中不一致的伪目标》

目录 简介工作重点方法ASA, adaptive anchor assignmentFAM-3D, 3D feature alignment moduleGMM, Gaussian Mixture Model实施细节 实验与SOTA的比较消融实验 总结 简介 题目&#xff1a;《Consistent-Teacher: Towards Reducing Inconsistent Pseudo-targets in Semi-supervi…...

设计模式:观察者模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

简介&#xff1a; 观察者模式&#xff0c;它是一种行为型设计模式&#xff0c;它允许一个对象自动通知其依赖者&#xff08;观察者&#xff09;状态的变化。当被观察者的状态发生改变时&#xff0c;它会通知所有的观察者对象&#xff0c;使他们能够及时做出响应。在观察者模式…...

kotling构造函数

Kotlin-继承与构造函数 - 简书 (jianshu.com) Kotlin语言中的继承与构造函数&#xff08;详解&#xff09;_kotlin 继承 构造函数_young螺母的博客-CSDN博客...

SpringMVC - 详解RESTful

文章目录 1. 简介2. RESTful的实现3.HiddenHttpMethodFilter4. RESTful案例1、准备工作2、功能清单3、具体功能&#xff1a;访问首页a>配置view-controllerb>创建页面 4、具体功能&#xff1a;查询所有员工数据a>控制器方法b>创建employee_list.html 5、具体功能&a…...

html表格标签

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><!--表格table 行 tr 列 td --> <table border"1px"><tr> <!--colsp…...

Node.JS---npm相关

文章目录 前言一、package.json配置项version&#xff1a;1.0.0devDependenciesdependenciespeerDependenciesoptionalDependencies 二、npm命令1、npm config listxmzs使用2、npm installpackage-lock.json作用 3、npm run4、 查看全局安装的可执行文件 npm生命周期npxnpx简介…...

Flutter的Don‘t use ‘BuildContext‘s across async gaps警告解决方法

文章目录 问题有问题的源码 问题原因问题分析Context的含义BuildContext的作用特殊情况 解决方法 问题 Flutter开发中遇到Don’t use BuildContext’s across async gaps警告 有问题的源码 if (await databaseHelper.isDataExist(task.title)) {showDialog(context: context,…...

Nginx 实战教程

本篇博客我会演示日常的工作中&#xff0c;我们是怎么利用nginx部署项目的。我们以部署一套前后分离的项目为本次讲述的内容 一、搭建后端项目 创建一个最简单的springboot项目&#xff1a; 只需要依赖一个web模块即可&#xff1a; 提供一个api接口&#xff0c;可以获取服务端…...

Web自动化——python

文章目录 1.八大元素定位2.元素基本操作3.浏览器常用操作4.获取元素信息的常用方法5.鼠标和键盘相关操作6.元素等待1.隐式等待2.显示等待 7.下拉选择框8.弹出框9.滚动条操作10.frame表单的切换11.多窗口切换12.窗口截图、验证码处理 1.八大元素定位 元素属性定位&#xff1a;id…...

华为OD 整数最小和(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…...

正则表达式:文本处理中的瑞士军刀

正则表达式是用于提取字符串规律的规则&#xff0c;通过特定语法表达&#xff0c;以匹配符合该规律的字符串。它具有通用性&#xff0c;不仅适用于Python&#xff0c;也可用于其他编程语言。 下面我用Python的re模块来进行实战演示&#xff1a;&#xff08;记得import re&…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...

Tauri2学习笔记

教程地址&#xff1a;https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引&#xff1a;https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多&#xff0c;我按照Tauri1的教程来学习&…...