python控制语句-2.2

目录

for循环

[range step 语法](#range step 语法)

[enumerate 函数](#enumerate 函数)

[for 循环练习-1](#for 循环练习-1)

多重循环

for循环练习-2


for循环

range step 语法

range 还支持循环的步长 step,做到类似 for(i=0; i<n; i+=step) 的效果

比如要输出 0 到 n-1 范围内的所有偶数,我们可以写 range(0, n, 2)

复制代码
n = 10
for i in range(0, n, 2):
    print(i)
    

输出:
0
2
4
6
8

range(start, stop, step) 函数生成一个数字序列,从 start 开始,以步长 step 递增,直到小于 stop。在这个例子中,从0开始,以步长2递增,打印出指定范围内的所有偶数。


enumerate 函数

在 Python,我们也可以使用 enumerate 来迭代序列中的元素的索引和元素值。

复制代码
list = ["shell", "is", "good"]
for index, element in enumerate(list):
    print(index, element)

输出:
0 shell
1 is
2 good

enumerate() 函数用于遍历一个可迭代对象(如列表、元组、字符串等)并返回元素的索引和值。在每次循环中,index 变量会存储当前元素的索引,element 变量会存储当前元素的值。通过 print() 函数将索引和对应的值打印出来。在这个例子中,列表中的每个元素及其索引将被逐个打印出来。


for 循环练习-1
复制代码
值为下标的倍数的元素个数

描述
输入一个列表 arr,返回元素值是元素下标的倍数的元素个数。
列表的下标从 0 开始。

arr = eval(input())
count = 0

for i, value in enumerate(arr):
    if i == 0:
        if value == 0:
            count += 1
    elif i != 0 and value % i == 0:
        count += 1

print(count)

'''
当我们运行这段代码时,首先会要求你输入一个列表。你可以输入 Python 有效的列表表示方法,例如输入 `[1, 2, 3, 4, 5]`。

接下来,代码中的 `eval(input())` 将会将你输入的内容作为 Python 代码进行求值,并将其赋值给变量 `arr`。

然后,代码中创建了一个计数变量 `count`,初始值为 0。

接下来,使用 `enumerate()` 函数来遍历列表 `arr`,同时获取元素的索引和值。使用 `i` 来表示索引,使用 `value` 来表示值。

接着进行判断。首先判断索引是否为 0。如果是 0,则检查当前值是否也为 0。如果是,说明索引 0 的位置上的值是其下标的倍数,将计数变量 `count` 加 1。

如果索引不是 0,则进入下一个判断条件。这个条件检查当前值是否是其索引的倍数。如果是,说明当前元素满足题目要求,将计数变量 `count` 加 1。

最后,输出计数变量 `count` 的值,即满足条件的元素个数。

'''

多重循环

for 循环中使用 else 语句:我们也可以将 else 语句与 for 循环结合使用,就像在 while 循环中一样。但是由于 for 循环中没有终止执行的条件,所以 else 块将在 for 块执行完毕后立即执行。下面的例子解释了如何做到这一点。

复制代码
list = ["shell", "is", "good"]
for index in range(len(list)):
    print(list[index])
else:
    print("shell")
    

输出:
shell
is
good
shell

在给定的代码中,list 是一个包含三个字符串元素的列表。for 循环通过 range(len(list)) 迭代列表的索引,并使用索引访问列表中的元素。然后,每个元素都被打印出来。在循环结束后,else 语句块被执行,并打印出字符串 "shell"。


for循环练习-2
复制代码
组成三角形的元组个数

描述
输入一个正整数 n,输出元素值不超过 n 的三元组中,能组成三角形的三条边边长的元组个数。

n = eval(input())
count = 0
for i in range(1,n+1): # 遍历所有元素值不超过n的三元组
    for j in range(1,n+1):
        for k in range(1,n+1): 
            triplet = sorted((i,j,k)) # 对每个三元组进行排序
            if triplet[0]+triplet[1] > triplet[2]: # 判断最小的两个数之和是否大于第三个数
               count +=1 # 计数器加1
print(count)
相关推荐
phltxy19 小时前
LangChain_Agent中间件实战
人工智能·python·深度学习·语言模型·中间件·langchain
axinawang19 小时前
第14课:查找、统计、分割字符串
python
倒流时光三十年19 小时前
第一阶段 02 · Mapping 与数据类型(text vs keyword 是重点)
后端·python·django
小大宇19 小时前
python蓝图、拦截器、异常处理、redis队列、线程池、控制台及日志文件输出
python
喝茶与编码19 小时前
真实业务场景:高并发 Upsert 死锁频发?InnoDB 锁机制与重试机制深度解析
数据库·python
倒流时光三十年19 小时前
第一阶段 05 · Java 客户端查询类详解(Query / SearchCriteria / Response 与复杂拼接)
java·开发语言·python
CTA终结者20 小时前
近期AI量化学习,把规则改写接到策略开发
人工智能·python
有Li20 小时前
使用整合电子健康记录的大语言模型智能体实现前列腺癌患者教育个性化文献速递/医学智能体前沿
人工智能·python·机器学习·语言模型·医学生
米码收割机20 小时前
【Python】Flask+SQLite_web 宠物领养系统 (源码+文档)【独一无二】
前端·python·flask
卷无止境21 小时前
python进阶:类方法与静态方法的分野,classmethod 和 staticmethod 到底该怎么选
后端·python