python20-while和for in的美

课程:B站大学
记录python学习,直到学会基本的爬虫,使用python搭建接口自动化测试就算学会了,在进阶webui自动化,app自动化

分支语句那些事儿

    • 循环的类型
    • 循环的作用
    • 循环的构成要素
    • while 循环
    • while 循环实战
    • 循环语句 for-in
  • 实践是检验真理的唯一标准


循环的类型

  • 重复一定次数的循环,称为计次循环。 比如跑步五公里,每公里就是一个计次单位。
  • 直到条件不满足时才停止重复执行的循环,称为条件循环。 比如直到跑不动为止,这没有具体的跑量,结束跑步的条件是跑不动了。
    Python 提供了两种类型的循环可以应对不同的使用场景。

for-in 循环: 计次循环
while 循环: 条件循环

循环的作用

  • 提高代码复用性,减少代码冗余
  • 遍历序列(字符串,元组,列表,字典等)

循环的构成要素

  • 初始化语句: 一条或多条语句,用于完成一些初始化工作。初始在循环开始之前执行。
  • 循环条件: 一般是一个布尔表达式,这个表达式能决定是否执行循环体
  • 循环体: 这个部分是循环的主体,如果循环条件允许,这个代码块将被重复执行。
  • 迭代语句: 这个部分在每次执行循环体结束后,对循环条件求值之前执行,通常用于控制循环条件中的变量向趋近于结束条件改变。

while 循环

在日常的生活中有时候循环的次数通常不会在刚开始就知道,而是满足条件之后就停止循环。
如有一路公交车不是固定时间间隔发车,而是在人数满足多少个之后就发车,一直到晚上的11点准时收工,那么没有到11点的话就会一直重复,直到条件不满足时才结束的循环,称为条件循环。
只要条件为真,这种循环会一直持续下去,通常指的是 while 循环。
while 循环的语法

while 条件表达式: 循环体

当条件表达式的返回值为真时,则执行循环体中的语句,执行完毕后,重新判断条件表达 式的返回值,直到表达式返回的结果为假时,退出循环。

while 循环实战

实战1: 求 1~10 之间所有整数的乘积。

# 保存结果的变量
result = 1
# 循环控制变量
n = 2
# 开始循环
while n <= 10:# 计算乘积result *= n# 改变循环变量向结束条件趋近n += 1# 输出结果
print("1~10的乘积为:", result)

实战2: 输入密码,直到密码输入正确,输出 登录成功。

password = "password" # 设置正确的密码
input_password = ""while input_password != password:input_password = input("请输入密码: ")print("密码正确,登录成功!")

实战3:在行酒令中,有一个数 7 小游戏,游戏参与者依次报数,但需要跳过所有包含 7 或 7 的整数倍的数字,编写程序找出 1~100 范围内所有符合该条件的数字,方便在游戏中跳过。

# 循环变量实始化
n = 1
# 循环条件
while n<=100:# 数字对7求模为0,则表示该数字是7的倍数# 将数字转换为字符串类型,使用成员运算符判断字符7是否在字符串中,检查包含关系if n % 7 == 0 or "7" in str(n):# 输出满足条件的数字print(n)# 改变循环变量趋近于结束条件n += 1

小tips:表中保存若干个数字,计算数字的和,最小值,最大值,平均数

def func1():n_sum = 0n_max = Nonen_min = Nonedata = [23456, 234, 23, 423, 423, 423, 423, 412, 3235, 346, 47, 5687, 678, 7, 453623, 4523, 565, 786, 9789, 567,34634, 234]# for n in data:i = 0l = len(data)#打断点查看执行逻辑while i < l:n = data[i]n_sum += nif n_max == None or n_max < n:n_max = nif n_min == None or n_min > n:n_min = ni += 1avg = n_sum / lprint(n_sum)print(n_max)print(n_min)print(avg)

思路:
首先,代码定义了一个名为func1()的函数,用于计算数字的和、最小值、最大值和平均数。

在函数内部,定义了变量n_sum,初始值为0,用于保存数字的和;定义了变量n_max和n_min,初始值均为None,分别用于保存最大值和最小值。

创建了一个列表data,其中保存了待处理的数字数据。

使用while循环遍历列表data中的每个元素。循环使用了索引i来访问列表中的每个数字。

在循环内部,首先获取当前数字n,然后执行以下操作: 将当前数字n累加到变量n_sum中,即n_sum += n。 判断当前数字n是否为最大值: 如果n_max为None,表示当前数字是第一个数字,将n_max更新为当前数字n。 否则,判断当前数字n是否大于n_max,如果是,则将n_max更新为当前数字n。 判断当前数字n是否为最小值: 如果n_min为None,表示当前数字是第一个数字,将n_min更新为当前数字n。 否则,判断当前数字n是否小于n_min,如果是,则将n_min更新为当前数字n。 更新索引i,即i += 1。

循环结束后,得到了数字的和、最大值和最小值。

接下来,计算平均数avg,即将数字的和n_sum除以列表data的长度。

通过print()函数分别打印输出数字的和、最大值、最小值和平均数。

小tips:编写一个 Python 程序,输入一个整数,计算该整数的二进制表示形式

def func5():result = ""data = int(input("Num:"))# 除二取余法while data != 0:tmp = data % 2data = data // 2result = str(tmp) + resultprint(result)

代码思路:
首先,我们初始化一个空字符串 result,用于存储最终的二进制表示形式。

然后,使用 input 函数获取用户输入的整数,并通过 int 函数将其转换为整数类型,赋值给变量 data。

接下来,使用 while 循环进行二进制转换。在每次循环中,我们通过 data % 2 取余操作得到当前位置的二进制值,并将其存储在临时变量 tmp 中。然后,使用 data // 2 进行整除操作得到下一个位置的二进制值。最后,通过 result = str(tmp) + result 将当前位置的二进制值转换为字符串,并添加到结果字符串 result 的前面。

当整数 data 为 0 时,循环终止,表示二进制转换完成。最后,我们使用 print(result) 将最终的二进制表示形式打印输出到控制台。

循环语句 for-in

一种专门处理字符串,元组,列表,字典等可迭代的序列类型数据的增强型 for 循环 for-in。
for-in 循环语法

for 迭代变量 in 对象:循环体

for-in 循环会将可迭代对象中的元素依次取出,保存到迭代变量中。

每取出一个变量,便执行一次循环体,在循环体中可以通过引用迭代变量,使用取出的数据。

遍历可迭代对象
使用for-in循环处理可迭代对象,可以使操作过程变的极其简单。

遍历字符串
for-in 循环会将字符串中的每个字符依次取出,放入迭代变量中。

格式:

for 变量 in 字符串:pass

示例: 输出前面示例中每个字符对应的ASCII码值。

s = "Hello Hogworts!"
for c in s:print(f"字符【 {c} 】的ASCII码为:【 {ord(c)} 】")

遍历元组
for-in 循环会将元组中的每个元素依次取出,放入迭代变量中。

格式:

for 变量 in 元组:pass

示例: 输出元组中每个数字的立方值

t = (1,2,3,4,5)
for n in t:print(f"数字【 {n} 】的立方值为:【 {n**3} 】")

遍历列表
for-in 循环会将列表中的每个元素依次取出,放入迭代变量中。

格式:

for 变量 in 列表:pass

示例: 将列表中所有的请求方式转换为大写输出

requestMethods = ["get", "post", "put", "delete", "patch", "header", "options", 'trace']
for method in requestMethods:print(f"请求方式【 {method} 】转换为大写后:【 {method.upper()} 】")

遍历字典
字典是一个比较特殊的数据类型,由 key-value 组成,在使用 for-in 遍历字典时,默认遍历的是字典的所有 key 。

如果需要遍历字典中的 value 或以 key-value 形式遍历,需要配合使用字典中对应的方法实现。

字典的默认遍历
for-in 循环在字典中依次取出每个元素的 key,放入迭代变量中。

格式:

for 变量 in 字典:pass

示例:

requestMethods = {"get": "用于获取服务器上的资源,通过在URL中传递参数来发送请求。","post": "用于向服务器提交数据,一般用于创建新的资源或进行修改操作。","put": "用于更新服务器上的资源,一般用于修改已存在的资源的全部内容。","delete": "用于删除服务器上的资源。"}
for method in requestMethods:print(method)

遍历字典中的所有 key
使用字典的 keys() 方法配合 for-in 循环可以遍历字典的所有 key,但一般不会这么操作。

格式:

for 变量 in 字典.keys():pass

示例:

requestMethods = {"get": "用于获取服务器上的资源,通过在URL中传递参数来发送请求。","post": "用于向服务器提交数据,一般用于创建新的资源或进行修改操作。","put": "用于更新服务器上的资源,一般用于修改已存在的资源的全部内容。","delete": "用于删除服务器上的资源。"}
for method in requestMethods.keys():print(method)

遍历字典中的所有 value
使用字典的 values() 方法配合 for-in 循环可以遍历字典的所有 value。需要注意的是,虽然可以取值,但对字典而言,这种操作也很少使用。

格式:

for 变量 in 字典.values():pass

示例:

requestMethods = {"get": "用于获取服务器上的资源,通过在URL中传递参数来发送请求。","post": "用于向服务器提交数据,一般用于创建新的资源或进行修改操作。","put": "用于更新服务器上的资源,一般用于修改已存在的资源的全部内容。","delete": "用于删除服务器上的资源。"}
for method in requestMethods.values():print(method)

遍历字典中的所有 key-value
字典中的一个完成的元素是以 key-value 形式体现的,如果要遍历字典中的所有元素,可以使用字典的 items() 方法配合 for-in 循环可以遍历字典的所有 key-vakue。

items() 方法取出的字典元素会以元组形式保存到迭代变量中,适当的场景下,可以使用解包操作,直接将元素中的 key-value 保存到对应的变量中。

格式:

for 变量 in 字典.items():pass# 或for 变量1, 变量2 in 字典.items():pass

示例:

r

equestMethods = {"get": "用于获取服务器上的资源,通过在URL中传递参数来发送请求。","post": "用于向服务器提交数据,一般用于创建新的资源或进行修改操作。","put": "用于更新服务器上的资源,一般用于修改已存在的资源的全部内容。","delete": "用于删除服务器上的资源。"}
for item in requestMethods.items():print(f"请求方式【 {item[0]} 】的作用为:【 {item[1]} 】")

配合解包操作,更简单的实现

requestMethods = {"get": "用于获取服务器上的资源,通过在URL中传递参数来发送请求。","post": "用于向服务器提交数据,一般用于创建新的资源或进行修改操作。","put": "用于更新服务器上的资源,一般用于修改已存在的资源的全部内容。","delete": "用于删除服务器上的资源。"}
for key, value in requestMethods.items():print(f"请求方式【 {key} 】的作用为:【 {value} 】")

小tips:编写一个Python程序,来计算给定文本中每个单词出现的次数。

text = """
Python is a popular programming language. It is widely used for web development, data science, and more.
Python has a simple and readable syntax, which makes it great for beginners.
"""
words = text.lower().split()  # 将文本转换为小写并分割为单词
word_count = {}  # 用于存储单词和出现次数的字典for word in words:word = word.strip(".,!?")  # 去除单词中的标点符号if word in word_count:word_count[word] += 1else:word_count[word] = 1# 输出词频统计结果
for word, count in word_count.items():print(f"{word}: {count}")

在这里插入图片描述
小tips:
打印图案
正方形:

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

代码思路:
外部循环 for i in range(5): 运行 5 次,总共有5行。

内部循环 for j in range(5): 也运行 5 次,每行输出5个星号。

print(“*”, end=" “) - 在内层循环中,使用 print() 函数输出一个星号,同时指定 end=” " 参数,将每个星号之间的分隔符设置为两个空格,以保持图案的对齐。

print() 换行。
等腰三角形:

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

实践是检验真理的唯一标准

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

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

相关文章

私人笔记:动手学大模型应用开发llm-universe项目环境创建

项目代码&#xff1a;datawhalechina/llm-universe: 本项目是一个面向小白开发者的大模型应用开发教程&#xff0c;在线阅读地址&#xff1a;https://datawhalechina.github.io/llm-universe/ 项目书&#xff1a;动手学大模型应用开发 一、初始化项目 uv init llm-universe-te…

剖析 Rust 与 C++:性能、安全及实践对比

1 性能对比&#xff1a;底层控制与运行时开销 1.1 C 的性能优势 C 给予开发者极高的底层控制能力&#xff0c;允许直接操作内存、使用指针进行精细的资源管理。这使得 C 在对性能要求极高的场景下&#xff0c;如游戏引擎开发、实时系统等&#xff0c;能够发挥出极致的性能。以…

详细讲解一下Java中的Enum

Java 中的 枚举&#xff08;Enum&#xff09; 是一种特殊的类&#xff0c;用于表示一组固定且有限的常量&#xff08;如状态、类型、选项等&#xff09;。它提供类型安全的常量定义&#xff0c;比传统的常量&#xff08;如 public static final&#xff09;更强大和灵活。以下是…

首席人工智能官(Chief Artificial Intelligence Officer,CAIO)的详细解析

以下是**首席人工智能官&#xff08;Chief Artificial Intelligence Officer&#xff0c;CAIO&#xff09;**的详细解析&#xff1a; 1. 职责与核心职能 制定AI战略 制定公司AI技术的长期战略&#xff0c;明确AI在业务中的应用场景和优先级&#xff0c;推动AI与核心业务的深度…

LeetCode【剑指offer】系列(位运算篇)

剑指offer15.二进制中1的个数 题目链接 题目&#xff1a;编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中数字位数为 ‘1’ 的个数&#xff08;也被称为 汉明重量).&#xff09;。 思路一&#xff…

前端路由缓存实现

场景&#xff1a;以一体化为例&#xff1a;目前页面涉及页签和大量菜单路由&#xff0c;用户想要实现页面缓存&#xff0c;即列表页、详情页甚至是编辑弹框页都要实现数据缓存。 方案&#xff1a;使用router-view的keep-alive实现 。 一、实现思路 1.需求梳理 需要缓存模块&…

Buildroot编译过程中下载源码失败

RK3588编译编译一下recovery&#xff0c;需要把buildroot源码编译一遍。遇到好几个文件都下载失败&#xff0c;如下所示 pm-utils 1.4.1这个包下载失败&#xff0c;下载地址http://pm-utils.freedesktop.org/releases 解决办法&#xff0c;换个网络用windows浏览器下载后&…

Operator 开发入门系列(一):Hello World

背景 我们公司最近计划将产品迁移到 Kubernetes 环境。 为了更好地管理和自动化我们的应用程序&#xff0c;我们决定使用 Kubernetes Operator。 本系列博客将记录我们学习和开发 Operator 的过程&#xff0c;希望能帮助更多的人入门 Operator 开发。 目标读者 对 Kubernete…

Java基础知识面试题(已整理Java面试宝典pdf版)

什么是Java Java是一门面向对象编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表&#xff0c;极好地实现了面向对象理论…

科学视角下的打坐:身心获益的实证探究

在快节奏的现代生活中&#xff0c;人们在追求物质丰富的同时&#xff0c;也愈发关注身心的健康与平衡。古老的打坐修行方式&#xff0c;正逐渐走进科学研究的视野&#xff0c;并以大量实证数据展现出对人体多方面的积极影响。​ 什么是打坐&#xff1a; 打坐是一种养生健身法…

javaSE————网络编程套接字

网络编程套接字~~~~~ 好久没更新啦&#xff0c;蓝桥杯爆掉了&#xff0c;从今天开始爆更嗷&#xff1b; 1&#xff0c;网络编程基础 为啥要有网络编程呢&#xff0c;我们进行网络通信就是为了获取丰富的网络资源&#xff0c;说实话真的很神奇&#xff0c;想想我们躺在床上&a…

MySQL性能调优(三):MySQL中的系统库(mysql系统库)

文章目录 MySQL性能调优数据库设计优化查询优化配置参数调整硬件优化 MySQL中的系统库1.5.Mysql中mysql系统库1.5.1.权限系统表1.5.2.统计信息表1.5.2.1.innodb_table_stats1.5.2.2.innodb_index_stats 1.5.3.日志记录表1.5.3.1. general_log1.5.3.2. slow_log 1.5.4.InnoDB中的…

多个路由器互通(静态路由)无单臂路由(简单版)

多个路由器互通&#xff08;静态路由&#xff09;无单臂路由&#xff08;简单版&#xff09; 开启端口并配ip地址 维护1 Router>en Router#conf t Router(config)#int g0/0 Router(config-if)#no shutdown Router(config-if)#ip address 192.168.10.254 255.255.255.0 Ro…

关于 AI驱动的智慧家居、智慧城市、智慧交通、智慧医疗和智慧生活 的详细解析,涵盖其定义、核心技术、应用场景、典型案例及未来趋势

以下是关于 AI驱动的智慧家居、智慧城市、智慧交通、智慧医疗和智慧生活 的详细解析&#xff0c;涵盖其定义、核心技术、应用场景、典型案例及未来趋势&#xff1a; 一、AI智慧家居 1. 定义与核心功能 定义&#xff1a;通过AI与物联网&#xff08;IoT&#xff09;技术&#…

【ESP32|音频】一文读懂WAV音频文件格式【详解】

简介 最近在学习I2S音频相关内容&#xff0c;无可避免会涉及到关于音频格式的内容&#xff0c;所以刚开始接触的时候有点一头雾水&#xff0c;后面了解了下WAV相关内容&#xff0c;大致能够看懂wav音频格式是怎么样的了。本文主要为后面ESP32 I2S音频系列文章做铺垫&#xff0…

端侧大模型综述On-Device Language Models: A Comprehensive Review

此为机器翻译&#xff0c;仅做个人学习使用 设备端语言模型&#xff1a;全面回顾 DOI&#xff1a;10.48550/arXiv.2409.00088 1 摘要 大型语言模型 &#xff08;LLM&#xff09; 的出现彻底改变了自然语言处理应用程序&#xff0c;由于减少延迟、数据本地化和个性化用户体验…

推流265视频,网页如何支持显示265的webrtc

科技发展真快&#xff0c;以前在网页上&#xff08;一般指谷歌浏览器&#xff09;&#xff0c;要显示265的视频流&#xff0c;都是很鸡肋的办法&#xff0c;要么转码&#xff0c;要么用很慢的hls&#xff0c;体验非常不好&#xff0c;而今谷歌官方最新的浏览器已经支持265的web…

redis的sorted set的应用场景

Redis 的 Sorted Set&#xff08;有序集合&#xff0c;简称 ZSet&#xff09; 结合了 Set 的去重特性 和 按分数&#xff08;score&#xff09;排序 的特性&#xff0c;非常适合需要 高效排序 或 范围查询 的场景。以下是它的典型应用场景及示例&#xff1a; 实时排行榜 场景&…

18-21源码剖析——Mybatis整体架构设计、核心组件调用关系、源码环境搭建

学习视频资料来源&#xff1a;https://www.bilibili.com/video/BV1R14y1W7yS 文章目录 1. 架构设计2. 核心组件及调用关系3. 源码环境搭建3.1 测试类3.2 实体类3.3 核心配置文件3.4 映射配置文件3.5 遇到的问题 1. 架构设计 Mybatis整体架构分为4层&#xff1a; 接口层&#…

未启用CUDA支持的PyTorch环境** 中使用GPU加速解决方案

1. 错误原因分析 根本问题&#xff1a;当前安装的PyTorch是CPU版本&#xff0c;无法调用GPU硬件加速。当运行以下代码时会报错&#xff1a;model YOLO("yolov8n.pt").to("cuda") # 或 .cuda()2. 解决方案步骤 步骤1&#xff1a;验证CUDA可用性 在Pyth…