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)
相关推荐
敲键盘的小夜猫6 分钟前
LLM复杂记忆存储-多会话隔离案例实战
人工智能·python·langchain
高压锅_122023 分钟前
Django Channels WebSocket实时通信实战:从聊天功能到消息推送
python·websocket·django
胖达不服输2 小时前
「日拱一码」020 机器学习——数据处理
人工智能·python·机器学习·数据处理
吴佳浩2 小时前
Python入门指南-番外-LLM-Fingerprint(大语言模型指纹):从技术视角看AI开源生态的边界与挑战
python·llm·mcp
吴佳浩2 小时前
Python入门指南-AI模型相似性检测方法:技术原理与实现
人工智能·python·llm
叶 落3 小时前
计算阶梯电费
python·python 基础·python 入门
Python大数据分析@3 小时前
Origin、MATLAB、Python 用于科研作图,哪个最好?
开发语言·python·matlab
编程零零七4 小时前
Python巩固训练——第一天练习题
开发语言·python·python基础·python学习·python练习题
Zonda要好好学习4 小时前
Python入门Day4
java·网络·python
小龙在山东5 小时前
Python 包管理工具 uv
windows·python·uv