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)
相关推荐
我命由我123452 小时前
5-1.Python 编码进阶 - 函数进阶(参数、返回值、递归、函数作为参数传递、lambda 匿名函数)
java·服务器·数据库·后端·python·java-ee·python3.11
FITA阿泽要努力2 小时前
Fork Agent:共享上下文的艺术
开发语言·python·agent
DeeGLMath2 小时前
optimtool最新版研究梯度优化
python·optimtool·梯度优化
坐吃山猪2 小时前
Python-Hermite基函数
开发语言·python
空~自由3 小时前
Python 正则 . * ? .* .*? (.*?) 通俗讲解
开发语言·python
Web3&Basketball3 小时前
DeepSeek V4.1 Flash 实测:Token 砍半、Search API 跑通
数据库·人工智能·python·大模型·api调用·deepseek·推理优化
墨子夕3 小时前
设计模式——Java × Python 双语言精讲 · 23 个经典模式 + 现代演进(第一篇)
java·python·设计模式
Linux实战笔记3 小时前
凌晨 3 点接口超时,排查发现 asyncio 协程里混用了同步 requests 库
python·asyncio·aiohttp·事件循环阻塞·协程调试
weixin_BYSJ19873 小时前
【计算机毕设】房屋租赁系统02647
java·vue.js·spring boot·python·django·课程设计
在世修行3 小时前
智学文枢:数据归谁管、变了怎么通知
python·桌面应用·状态管理·signal·store·pyside