【Python】穿越Python的迭代之旅:while,for 循环的奇妙世界

news2024/11/27 22:37:37

欢迎来到CILMY23的博客

本篇主题为: 穿越Python的迭代之旅:while,for 循环的奇妙世界

个人主页:CILMY23-CSDN博客

系列专栏:Python | C++ | C语言 | 数据结构与算法

感谢观看,支持的可以给个一键三连,点赞关注+收藏。


写在前头:

while 和 for 循环是Python中非常重要的迭代工具,掌握它们的用法和注意事项对于编写高效、可靠的代码至关重要。但是什么是迭代?迭代是一种在编程中经常用到的概念,它指的是重复执行一组操作或处理一系列元素的过程。在迭代过程中,程序会依次处理序列中的每个元素,或者根据某个条件重复执行某段代码,直到满足退出条件为止。而循环是迭代的实现方式


目录

一、循环的起源 --- while for

1.1 while语句

1.1.1 while语句的应用 

1.2 for语句

1.2.1 for语句的应用

二、循环的中断 - break和continue 

2.1 break语句

2.2 continue语句

2.3 pass语句

三、循环中的循环 


一、循环的起源 --- while for

循环结构依据某一条件反复执行某段程序(语句块),该语句块被执行的次数称为循环次数,而循环的始端还得依靠while语句和for语句。

1.1 while语句

while语句用于循环执行一段程序,即在满足某种条件下的情况,重复执行某段程序,以处理某种需求。

while语句的语法如下:

while 表达式:

        语句块

(else:

        else语句块)

while会根据表达式的逻辑值(真,假)来判断是否执行对应的语句块,如果真,则执行语句块,如果假,则执行else语句块,不过一般很少用else。更经常使用单while。 

1.1.1 while语句的应用 

例如:计算1~100的和

n = 100
sum = 0
i = 1
while i<=n:
    sum = sum +i
    i += 1
print(f"1到{n}之和为:{sum}")

结果:

比起在C语言中写这些,是否轻松了不少呢?

 例如:使用while-else语句求1-10的阶乘和

mul = 1
i = 1
sum = 0
while i<= 10:
    mul = mul * i
    sum = sum +mul
    i = i+1
else:
    print("循环结束!")
print(f"sum = {sum}")

结果:

除此之外,while语句还可以搭配input()函数进行多输入

例如:通过键盘动态录入学生的英语成绩,输入-1退出,并计算录入学生英语成绩的人数、总分和平均分。

total_score = 0
average_score = 0.0
count = 0
English_score = int(input("请输入学生的英语成绩:"))

while English_score != -1:
    total_score += English_score
    count += 1
    English_score = int(input("请输入学生的英语成绩:"))

average_score = total_score / count

print(f"录入英语成绩{count}份,学生总成绩{total_score},平均成绩{average_score}")

结果:

1.2 for语句

在python中,for语句更适合循环访问系列或迭代对象(如字符串、列表、元组、字典等)中的元素,其语法为:

for 变量 in 迭代对象:

        语句块

(else:

        else语句块)

当然for 语句也可以指定次数,这种情况就得用到我们的range()函数了,range()的讲解---链接

for 变量 in range(次数):
    语句块

range()函数用于生成一个指定范围内的整数序列,它可以用来控制for循环的次数

1.2.1 for语句的应用

例:使用for 循环遍历列表

my_list = ['C', 'I', 'L', 'M', 'Y', 2, 3]

for i in my_list:
    print(i, end=" ")

例: 使用for-else语句遍历元组中的元素,并在结束后给出提示信息

my_tuple = ('C', 'I', 'L', 'M', 'Y', 2, 3)

for i in my_tuple:
    print(i, end=" ")
else:
    print("遍历结束")

例:通过判断1-100中除以3的余数是否为0的数,如果是则打印该数

for i in range(1,100):
    if i % 3 == 0:
        print(f"{i}",end=" ")

结果:

二、循环的中断 - break和continue 

在Python中,break 语句用于退出循环,continue 语句用于跳过该次循环,pass 是空语句(不做任何处理)。接下来我们详细看看这三种语句的应用吧。 

2.1 break语句

例如:输出斐波那契数列前10项

斐波那契数列(Fibonacci sequence)是一个经典的数学问题,其定义如下:

  1. 第一个和第二个数是 1 和 1。
  2. 从第三个数开始,每个数都是前两个数之和。

换句话说,数列的每一项都等于其前两项之和。斐波那契数列的前几个数字是:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...

n1 = 1
n2 = 1
n3 = 2
count = 3
print("斐波那契前十项:", n1, n2, n3, end=" ")
while True:
    if count >= 10:
        break
    else:
        n1 = n2
        n2 = n3
        n3 = n1 + n2
        count += 1
        print(n3, end=" ")

解释:

2.2 continue语句

例如:求1~100 范围内所有偶数的和 (不包含100)

# 2.2 continue
i = 1
sum = 0
for i in range(1, 100):
    if i % 2 == 1:
        continue
    sum += i
print(f"1-100的所有偶数和: {sum}")

解释:

2.3 pass语句

pass是 Python 中的一个空语句,它不执行任何操作,只是作为占位符使用。在需要语法上需要语句但不需要实际执行任何操作的情况下,可以使用pass语句。

例如:在循环中使用pass 

i = 1
sum = 0
for i in range(1,100):
    if i % 2 == 0:
        sum += i
else:
    pass
print(f"1-100的所有偶数和: {sum}")

 例如:在函数中使用

def my_function():
    pass

例如:在类中使用 

class MyClass:
    pass

当我们需要在函数或类的定义中暂时不添加任何操作时,可以使用 pass 语句来保持语法的完整性。

三、循环中的循环 

 循环中的循环,也称为嵌套循环,是指在一个循环内部包含另一个循环。

 例如:输出元素为"*"、五行五列的左下角直角三角形

for i in range(5):
    for j in range(i + 1):  
        print("*", end=" ")
    print()

结果如下:

例如:输出对角线元素为1的4行4列矩阵

for i in range(4):  # 控制行数
    for j in range(4):  # 控制列数
        if i == j:
            print("1", end=" ")
        else:
            print("0", end=" ")
    print()  # 换行

结果如下:

 


感谢各位同伴的支持,本期python就讲解到这啦,如果你觉得写的不错的话,可以给个一键三连,点赞关注+收藏,若有不足,欢迎各位在评论区讨论。  

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE4_动画基础_相同骨骼的动画重定向步骤

学习笔记&#xff0c;仅供参考&#xff01; 动画重定位 是对现有动画稍加修改后用于多个角色的过程&#xff0c;它使你无需创建全新的动画&#xff0c;因为你可以在多个角色间共享动画资源。 存在两种形式的动画重定位&#xff0c;在第一种形式中&#xff0c;你要与之共享动画…

18 统计网站每日的访问次数

1.将竞赛的数据上传HDFS,查看数据的格式 通过浏览器访问hdfs,查看该文档前面的部分数据 每条数据的字段值之间使用逗号隔开的 &#xff0c;最终时间是第五个自动&#xff0c;获取第五个字段值的中的年月日。 2.通过Idea创建项目mr-raceData ,基础的配置 修改pom.xml,添加依赖 …

QML和QtQuick简介以及QML实例

从 Qt 4.7 开始&#xff0c;Qt 引入了一种声明式脚本语言&#xff0c;称为 QML&#xff08;Qt Meta Language 或者 Qt Modeling Language&#xff09;&#xff0c;作为 C 语言的一种替代。而 Qt Quick 就是使用 QML 构建的一套类库。 QML 是一种基于 JavaScript 的声明式语言。…

zookeeper实验部署

一、前期部署 IP地址 主机名安装软件系统版本192.168.10.8 node1apache-zookeeper-3.5.7-bin.tar.gz centos7.5 192.168.10.9 node2apache-zookeeper-3.5.7-bin.tar.gzcentos7.5192.168.10.10 node3apache-zookeeper-3.5.7-bin.tar.gzcentos7.5 二、zookeeper实验部署 2.1 同时…

SRIO系列-基本概念及IP核使用

参考&#xff1a;串行RapidIO: 高性能嵌入式互连技术 | 德州仪器 SRIO协议技术分析 - 知乎 PG007 目录 一、SRIO介绍 1.1 概要 1.2 SRIO与传统互联方式的比较 1.3 串行SRIO标准 1.4 SRIO层次结构&#xff1a; 1.4.1 逻辑层 1.4.2 传输层协议 1.4.3 物理层 二、Xilinx…

Go: 理解 Sync.Pool 的设计

sync 包提供了一个强大且可复用的实例池&#xff0c;以减少 GC 压力。在使用该包之前&#xff0c;我们需要在使用池之前和之后对应用程序进行基准测试。这非常重要&#xff0c;因为如果不了解它内部的工作原理&#xff0c;可能会影响性能。 池的限制 我们来看一个例子以了解它…

ELK及ELFK排错

目录 一、ELK及ELFK排错思路 1.1filebeat侧排查 1.2logstash侧排查 1.3ES、kibana侧问题 一、ELK及ELFK排错思路 1.1filebeat侧排查 第一步&#xff1a;排查filebeat上的配置文件有没有写错&#xff0c;filebeat的配置文件是yml文件&#xff0c;一定要注意格式。 第二步…

【实测】记一次用windows11家庭中文版部署django+vue项目的踩坑之旅

整个过程下来&#xff0c;给我的感觉就和吃了翔一样难受&#xff0c;窒息的感觉&#xff0c;全程没少骂win11的设计者... 因为要调试一些只有在windows才会出现的测试平台bug&#xff0c;于是我耗重金购入了一台顶配windows笔记本。以下是配置&#xff1a; 配置还蛮高的对吧&am…

基于Springboot+Vue+Spring-Security+高德地图API的校园出行管理系统

1介绍 1.1编写目的 明确系统功能与操作流程&#xff0c;说明书提供了详细的系统功能描述和操作指南&#xff0c;使得用户能够了解如何通过系统申请请假、审批流程以及如何管理和监控请假记录等。 1.2文档范围 该文档的目的是解决整个项目系统中“做什么”的问题。对于开发技…

Vue结合ECharts与SpringBoot,实现高效数据库图表绘制

目录 Echart图表的优点 功能丰富 美观性 跨平台兼容性 易于使用 交互性强 扩展性强 社区支持 效果展示 使用Echart的步骤 假数据 1、安装 2、在vue中引入&#xff08;全局引入&#xff09; 3、在vue中的使用 4、模板代码放在哪个位置 5、完整的一个vue页面实例…

如何为Postgres数据库设置安全的访问控制和权限管理

文章目录 解决方案1. 使用角色和权限管理2. 配置认证方法3. 使用网络访问控制4. 定期审查和更新权限 示例代码1. 创建角色并分配权限2. 配置密码认证3. 配置网络访问控制 总结 PostgreSQL是一个功能强大的开源关系型数据库系统&#xff0c;提供了丰富的权限和访问控制机制&…

移动端双验证码登录实现

说明&#xff1a;本文介绍如何用图形验证码短信验证码实现移动端登录思路&#xff1b; 分析 通过手机号图形验证码手机验证码实现登录的时序图如下&#xff1a; 说明&#xff1a; &#xff08;1&#xff09;用户进入登录界面&#xff0c;出现图形验证码&#xff0c;可点击图形…

Jsp 中的getServletContext全局数据共享

servletContext作用于不同用户之上 1. 一个用户将数据保存到了servletContext中, // getcontext的servlet程序 Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext context this.get…

upload-labs靶场详解

靶场环境 下载链接&#xff1a;https://codeload.github.com/c0ny1/upload-labs/zip/refs/heads/master 使用小皮集成环境来完成这个靶场 将文件放到WWW目录下就可以进行访问 进入关卡后页面呈现&#xff1a; Pass-01&#xff08;前端绕过&#xff09; 我们先尝试上传一个web.…

如何通过Postgres的日志进行故障排查?

文章目录 一、配置日志记录二、查看和分析日志三、使用日志进行故障排查的示例四、总结 在进行数据库管理和维护时&#xff0c;日志分析是一项至关重要的技能。PostgreSQL的日志记录功能可以帮助我们追踪数据库的运行状态&#xff0c;定位问题&#xff0c;以及优化性能。下面&a…

7-6 铺满方格

有一个1n的长方形,由边长为1的n个方格构成,例如,当n=3时为13的方格长方形如下图所示。求用11、12、13的骨牌铺满方格的方案总数。 输入格式: 测试数据有多组,处理到文件尾。每组测试输入一个整数n(1≤n≤50)。 输出格式: 对于每组测试,输出一行,包含一个整数,表示用…

科学计算与人工智能

人工智能的“科技幻觉” “美丽、白雪皑皑的东京市熙熙攘攘。镜头追随着人们&#xff0c;一同欣赏美丽的雪景和热闹的摊位&#xff0c;感受雪花纷飞&#xff0c;樱花起舞。”&#xff08;翻译自英文Prompt&#xff09; 这如同现实场景的画面&#xff0c;并非出自摄影师的镜头&…

链表OJ - 6(链表分割)

题目描述&#xff08;来源&#xff09; 现有一链表的头指针 ListNode* pHead&#xff0c;给一定值x&#xff0c;编写一段代码将所有小于x的结点排在其余结点之前&#xff0c;且不能改变原来的数据顺序&#xff0c;返回重新排列后的链表的头指针。 思路 创建两个链表&#xff0c…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《含状态耦合约束的分布式船舶储能系统两层能量管理方法》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

24年云南三支一扶报名时间线报名流程

一、报名阶段 1、阅读公告&#xff1a;4月17日起 2、提交报考申请&#xff1a;4月22日09:00至4月25日18:00 3、审核报名资格&#xff1a;4月22日09:00至4月26日18:00 4、公告有效招募岗位&#xff1a;4月28日 5、所报岗位被取消改报岗位&#xff1a;4月29日09:00至16:00 6、打印…