python基础教程八(循环1)

news2024/12/26 9:56:15

1. while循环

为避免多次重复的代码,我们会用到循环
while (condition):
执行语句

while循环的结构非常简单只要条件满足就一直循环直到,条件不满足为止。
例子如下:

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

结果就是最简单的输出1-100的数字
在这里插入图片描述
while循环适合那种没有确定次数,变化规律不是很明显,只是知道何时应该停止的循环。如果知道具体次数那就更适合下面这种循环for

2. for循环

while语句非常灵活,可在条件为真时反复执行代码块。,但有时你可能想根据需要进行定制。一种这样的需求是序列(或其他可迭代对象)中每个元素执行的代码块

注意:基本上可迭代对象是可使用for循环进行遍历的对象。

为此,可使用for语句:

>>> words=['this','is','an','ex','parrot']
>>> for word in words:
...     print(word)
...
this
is
an
ex
parrot

1. range

鉴于迭代(也就是遍历)特定范围的内的数是一种常见的任务,python提供了一个创建范围的内置函数range

>>> range(0,10)
range(0, 10)
>>> list(range(0,10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

范围类似于切片。它们包含起始位置(这里为0)但不包含结束位置(这里为10)。在很多情况下,你都希望起始为0.实际上,如果只提供一个位置,将把这个位置视为结束为止,并假定起始位置为0

>>> range(0,10)
range(0, 10)

下面的程序打印数1~100:

for i in range(1,101):
	print(i)

注意,相比前面的while循环,这些代码紧凑的多。

练习用for循环画正五角星

#王八默认朝右边

from turtle import *
lt(72)
for i in range(1,6):
	fd(100)
	rt(144)



input("图已经画完请按回车关闭")

在这里插入图片描述

2. 迭代字典

要遍历字典的所有关键字,可像遍历序列那样使用普通的for语句
d={'x':1,'y':2,'z':3}
for key in d:
    print("{}'s value={}".format(key,d[key]))

====================== RESTART: E:\python\python练习\字典遍历.py =====================
x's value=1
y's value=2
z's value=3


也可以使用keys等字典方法来获取所有的键。如果只对值感兴趣,可以使用d.values.
你可能记得,d.items以元组的方式返回键值对。这是for循环的有点之一,可在其中使用序列解包
a={1:2,3:4}
for i,j in a.items():
    print(i,j)


输出为
1 2
3 4

字典元素的排序顺序是不确定的。如果顺序很重要,可将键或值存储在一个列表中并对列表排序,再进行迭代。

3. 一些迭代工具

1. 并行迭代

有时候,你想同时迭代俩个序列。假设有下面俩个列表:
names=[‘zhangsan’,‘lisi’,‘damon’,‘beth’]
ages=[12,12,23,11]
如果打印名字和对应的年龄,可以像下面这样做:

for i in range(len(name)):
	print(name[i],age[i])

i是作为循环索引的标准名称。一个很有用的并行迭代工具是内置函数zip它将俩个序列缝合起来,并返回一个由元组组成的序列。返回值是一个适合的迭代对象,可使用list将其转换为列表

names=['zhangsan','lisi','damon','beth']
ages=[12,12,23,11]
print(list(zip(names,ages)))



输出为:
[('zhangsan', 12), ('lisi', 12), ('damon', 23), ('beth', 11)]

缝合后,可在循环元组解包。

names=['zhangsan','lisi','damon','beth']
ages=[12,12,23,11]
for name,age in zip(names,ages):
    print(name,age)


输出为:

zhangsan 12
lisi 12
damon 23
beth 11

函数zip可以用于缝合任意的序列。需要指出的是,当序列的长度不同时,函数zip在最短的序列用完后停止缝合。

2. 迭代时获取索引

在有些情况下,你需要知道迭代序列的同时获取当前对象的索引。例如,你可能想替换一个字符串列表所有包含子串‘xxx’ 的字符串,当然,完成这种任务的方法有很多,但这里假设要这样做:

for string in strings:
	if 'xxx' in string:
		index=strings.index(string)
		string[index]='[censored]'
	

这可行,替换前的搜索好像没有必要。另外返回的索引可能不对(即返回的是该字符串首次出现处的索引)。另一种方案是使用内置函数enumerate

s=['123','2312','23213','xxxew']
for index,string in enumerate(s):
    if 'xxx' in string:
        s[index]='hahah'
print(s)
input()

3. 反向迭代和排序后再迭代

来看另外俩个很有用的函数,reversed和sorted。曾经在列表那里浅显的说过他们,但可用于任何序列和可迭代的对象,且不就地修改对象,而是排列反转后和排序后的版本。

>>> sorted([4,3,6,8,3])
[3, 3, 4, 6, 8]
>>> sorted('hello,world')
[',', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
>>>
>>> list(reversed('hello,world'))
['d', 'l', 'r', 'o', 'w', ',', 'o', 'l', 'l', 'e', 'h']
>>> ''.join(reversed('hello world'))
'dlrow olleh'
>>>

请注意,sorted返回一个列表,而reversed像zip那样返回一个更神秘的迭代对象,你无需关心到底是什么,只管在for循环或join方法等中使用它,不会有任何问题。只是你不能对它执行索引或切片操作,也不能直接对它调用列表方法。要执行这些操作,可先使用list对返回对象进行转换

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

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

相关文章

【Internal Server Error】pycharm解决关闭flask端口依然占用问题

Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application. 起因&#xff1a; 我们在运行flask后&#xff0c;断开服务依然保持运行&#xff0…

Java中SpringBoot组件集成接入【MQTT中间件】

Java中SpringBoot组件集成接入【MQTT中间件】 1.MQTT介绍2.搭建MQTT服务器1.Windows2.Ubuntu3.Docker4.其他方式3.mqtt可视化客户端MQTTX及快速使用教程4.SpringBoot接入MQTT1、maven依赖2、MQTT配置3、MQTT组件具体代码1.定义通道名字2.消息发布器3.MQTT配置、生产者、消费者4…

基于Java SSM框架实现班级同学录管理系统项目【项目源码】

基于java的SSM框架实现高校校园点餐系统演示 SSM框架 当今流行的“SSM组合框架”是Spring SpringMVC MyBatis的缩写&#xff0c;受到很多的追捧&#xff0c;“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架&#xff0c;通常更简单的数据源。Spring…

【S32K 进阶之旅】 NXP S32K3 以太网 RMII 接口调试(2)

前言 前文介绍了 NXP S32K3 以太网 RMII 接口调试的开发环境搭建&#xff0c;下面开始详解软件调试步骤。没看过第一节的小伙伴请移步《【S32K 进阶之旅】 NXP S32K3 以太网 RMII 接口调试&#xff08;1&#xff09;》&#xff0c;话不多说我们直接进入正题。 lwip Stack 介绍 …

oracle 19c容器数据库数据加载和传输-----SQL*Loader(一)

目录 数据加载 &#xff08;一&#xff09;控制文件加载 1.创建用户执行sqlldr 2.创建文本文件和控制文件 3.查看表数据 4.查看log文件 &#xff08;二&#xff09;快捷方式加载 1.system用户执行 2.查看表数据 3.查看log文件 外部表 数据加载和传输的工具&#xff1…

Vue3---安装路由

介绍 在Vue3项目中安装路由 示例 第一步&#xff1a;执行npm命令安装路由 npm install vue-router4第二步&#xff1a;在项目的src文件夹下创建router子文件夹 第三步&#xff1a;创建index.js和routes.js文件&#xff0c;以下为文件的代码 //通过vue-router插件实现模板…

docker打包介绍

最近在做一个开源项目&#xff0c;遇到开发者问各种问题&#xff0c;发现都是系统和软件版本的差异引起的。于是了解了一下docker的使用&#xff0c;发现docker真是个好东东&#xff0c;基本解决了各种版本差异的问题&#xff0c;真正做到了一键部署使用。 先熟悉一下docker里…

VS2022 | 显示Unreal Engine日志

VS2022 | 显示Unreal Engine日志 视图 -> 其他窗口 -> Unreal Engine日志 视图 -> 其他窗口 -> Unreal Engine日志

ORACLE体系结构逻辑结构-表空间、段、区和数据块

实例 实例是指在内存中分配的一块共享内存区域&#xff08;SGA&#xff09;和一组后台进程&#xff08;或线程&#xff09;&#xff0c;它们用于访问和控制数据库。3实例是Oracle数据库的运行时环境&#xff0c;它是数据库的动态部分&#xff0c;它可以启动和关闭&#xff0c;…

本地部署 big-AGI

本地部署 big-AGI 1. big-AGI 介绍2. Github 地址3. 本地部署 big-AGI4. 访问 big-AGI5. 配置 API key6. 测试一下 1. big-AGI 介绍 欢迎使用 big-AGI &#x1f44b;&#xff0c;这是一款面向需要功能、形式、简单性和速度的专业人士的 GPT 应用程序。 big-AGI 由 10 个供应商…

静态网页设计——崩坏3(HTML+CSS+JavaScript)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a; 使用技术&#xff1a;HTMLCSSJS&#xff08;静态网页设计&#xff09; 主要内容&#xff1a;对游戏崩坏3进行简单介绍。 https://www.bilib…

ATTCK视角下的信息收集:组策略信息收集

目录 什么是组策略&#xff1f; 本地组策略收集 域组策略收集 组策略存储收集 组策略对象收集 什么是组策略&#xff1f; Windows中的组策略&#xff08;Group Policy&#xff09;是一种管理和配置Windows操作系统的功能&#xff0c;它允许系统管理员对计算机和用户的行为…

Photoshop Express一款出色的照片编辑器

​【应用名称】&#xff1a;Photoshop Express ​【适用平台】&#xff1a;#Android ​【软件标签】&#xff1a;#Photoshop ​【应用版本】&#xff1a;12.1.2 ​【应用大小】&#xff1a;223MB ​【软件说明】&#xff1a;软件升级更新。一款出色的照片编辑器&#xff0c…

Xshell连接Ubuntu失败

错误&#xff1a; Xshell连接Ubuntu失败。 Connecting to 192.168.xx.xxx:22…Could not connect to 192.168.xx.xxx’ (port 22): Connection failed. 解决方案&#xff1a;边解决&#xff0c;边测试Xshell是否可以连接 1、SSH 服务未启动&#xff1a; 确保 Ubuntu 上的 S…

回车与换行的区别。CR、LF、CRLF的区别。\r \n \r\n

1.先上结论 中文英文英文缩写ASCⅡ转义ASCⅡ值系统回车Carriage ReturnCR\r13MacIntosh&#xff08;早期的Mac&#xff09;换行LinefeedLF\n10Unix/Linux/Mac OS X&#xff08;现在的Mac&#xff09;回车并换行CRLF\r\nWindows 2.详解 很长一段时间里&#xff0c;对于CRLF、C…

swing快速入门(四十二)JTree的基本创建

注释很详细&#xff0c;直接上代码 新增内容 &#x1f526;JTree的创建 &#x1f526;设置节点之间的连线 &#x1f526;设置节点之间的水平分割线 &#x1f526;设置根节点的展开折叠图标 &#x1f526;设置是否隐藏根节点 package swing31_40;import javax.swing.*; import j…

【Electron】 Vite项目 初始配置 scss

pnpm add -D sasssrc下面创建 styles/main.scss 文件 mian.ts 内引入 ./styles.scss 文件 import ./styles/main.scss 测试scss是否生效&#xff1a; styles/mian.scss :root{--mian:red; } App.vue <template><div>你好</div> </template><s…

锂电池低温充电效率低、容量低的原因

前言&#xff1a;锂离子电池在充电时&#xff0c;Li从正极脱嵌并嵌入负极&#xff1b;但是当一些异常情况&#xff1a;如负极嵌锂空间不足、Li嵌入负极阻力太大、Li过快的从正极脱嵌但无法等量的嵌入负极等异常发生时&#xff0c;无法嵌入负极的Li只能在负极表面得电子&#xf…

Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD

文章目录 Django ORM介绍1.使用pycharm新建一个Django项目2.修改settings.py文件中 DATABASES3.创建APP4.创建模型5.操作数据库 Django ORM介绍 Django 模型使用自带的 ORM。 对象关系映射&#xff08;Object Relational Mapping&#xff0c;简称 ORM &#xff09;用于实现面向…

【动态代理详解】

文章目录 1. 关于代理1.1 代理的概述1.1.1 什么是动态代理1.1.2 动态代理能做什么 1.2 什么是代理1.2.1 生活中的代理1.2.2 为什么要找中介&#xff1f; 1.3 开发中的代理模式&#xff08;代理&#xff09;1.3.1 使用代理模式的作用 1.4 实现代理的方式 2. 静态代理2.1 什么是静…