Python循环结构全面解析

2025-06-20 17:50

本文主要是介绍Python循环结构全面解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随...

循环是计算机科学运算领域的用语,也是一种常见的控制流程。循环是一段在程序中只出现一次,但可能会连续执行多次的代码。循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次。

python提供了两种主要的循环结构:for循环和while循环。

for-in循环

如果明确知道循环执行的次数,推荐使用for-in循环

for 变量 in 可迭代对象:
    # 循环体
    # 每次迭代执行这里的代码
# 遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)
# 遍历字符串
for char in "Python":
    print(char)
# 使用range()函数
for i in range(5):  # 0到4
    print(i)
for i in range(2, 6):  # 2到5
    print(i)
for i in range(0, 10, 2):  # 0到9,步长为2
    print(i)

range函数:

  • range(101):可以用来产生0到100范围的整数,需要注意的是取不到101。
  • range(1, 101):可以用来产生1到100范围的整数,相当于是左闭右开的设定,即[1, 101)。
  • range(1, 101, 2):可以用来产生1到100的奇数,其中2是步长(跨度),即每次递增的值,101取不到。
  • range(100, 0, -2):可以用来产生100到1的偶数,其中-2是步长(跨度),即每次递减的值,0取不到。
# 同时获取索引和值
for index, value in enumerate(fruits):
    print(index, value)
# 遍历字典
person = {"name": "Alice", "age": 25, "city": "New York"}
for key in person:  # 遍历键
    print(key)
for value in person.values():  # 遍历值
    print(value)
for key, value in person.items():  # 同时遍历键和值
    print(key, value)
# 并行遍历多个序列
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
    print(name, age)
# 循环变量命名为_
import time
for _ in range(36):
    print('hello, world')
    time.sleep(1)

while循环

如果要构造循环结构但是又不能确定循环重复的次数,推荐使用while循环。

while 条件:
    # 循环体
    # 当条件为True时执行这里的代码
# 基本while循环
count = 0
while count < 5:
    print(count)
    count += 1
# 无限循环(通常配合break使用)
while True:
    user_input = input("输入'quit'退出: ")
    if user_input == "quit":
        print(f"你输入了:{user_input},退出")
        break
    print(f"你输入了: {user_input}")

循环控制语句

break语句

break用于完全终止循环,跳出循环体。

for i in range(10):
    if i == 5:
        break
    print(i)  # 只打印0-4

continue语句

continue跳过当前迭代,直接进入下一次循环。

for i in range(10):
    if i % 2 == 0:
        continue
    print(i)  # 只打印奇数

else子句

循环可以有一个可选的else块,它在循环正常完成(即不是由break终止)时执行。

for i in range(5):
    print(i)
else:
    print("循环正常完成")
# 如果循环被break终止,else不会执行
for i in range(5):
    if i == 3:
        break
    print(i)
else:
    print("这不会被执行")

嵌套的循环结构

循环可以嵌套,即一个循环内部包含另一个循环。

# 打印乘法表
for i in range(1, 10):
    for j in range(1, i+1):
        print(f"{j}{i}={i*j}", end="\t")
    print()  # 换行
# 嵌套循环中的break和continue
for i in range(3):
    for j in range(3):
        if j == 1:
            break  # 只影响内层循环
        print(i, j)

循环结构的应用

例子1:判断素数

要求:输入一个大于 1 的正整数,判断它是不是素数。

提示:素数指的是只能被 1 和自身整除的大于 1 的整数。例如对于正整数 n,我们可以通过在 2 到 n−1 之间寻找有没有 n 的因子,来判断它到底是不是一个素数。当然,循环不用从 2 开始到 n−1 结束php,因为对于大于 1 的正整数,因子应该都是成对出现的,所以循环到 n 就可以结束了。

"""
输入一个大于1的正整数判断它是不是素数
"""
num = int(input('请输入一个正整数: '))
end = int(num ** 0.5)
is_prime = True
for i in range(2, end + 1):
    if num % i == 0:
        is_prime = False
        break
if is_prime:
    print(f'{num}是素数')
else:
    print(f'{num}不是素数')

例子2:最大公约数

要求:输入两个大于 0 的正整数,求两个数的最大公约数。

提示:两个数的最大公约数是两个数的公共因子中最大的那个数。

"""
输入两个正整数求它们的最大公约数
"""
x = int(input('x = '))
y = int(input('y = '))
for i in range(x, 0, -1):
    if x % i == 0 and y % i == 0:
        print(f'最大公约数: {i}')
        break

例子3:猜数字游戏

要求:计算机出一个 1 到 100 之间的随机数,玩家输入自己猜的数字,计算机给出对应的提示信息“大一点”、“小一点”或“猜对了”,如果玩家猜中了数字,计算机提示用户一共猜了多少次,游戏结束,否则游戏继续。

"""
猜数字小游戏
"""
import random
answer = random.randrange(1, 101)
counter = 0
while True:
    counter += 1
    num = int(input('请输入: '))
    if num < answer:
        print('大一点.')
    elif num > answer:
        print('小一点.')
    else:
        print('猜对了.')
        break
print(f'你一共猜了{counter}次.')

分支和循环结构实战

例子1:100以内的素数

说明:素数指的是只能被 1 和自身http://www.chinasem.cn整除的正整数(不包括 1)

"""
输出100以内的素数
"""
for num in range(2, 100):
    is_prime = True
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            is_prime = False
            break
    if is_prime:
        print(num)

例子2:斐波那契数列

要求:输出斐波那契数列中的前 20 个数。

说明:斐波那契数列(Fibonacci sequence),通常也被称作黄金分割数列,是意大利数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)在《计算之书》中研究理想假设条件下兔子成长率问题而引入的数列,因此这个数列也常被戏称为“兔子数列”。斐波那契数列的特点是数列的前两个数都是 1,从第三个数开始,每个数都是它前js面两个数的和。按照这个规律,斐波那契数列的前 10 个数是:1, 1, 2, 3, 5, 8, 13, 21, 34, 55。斐波那契数列在现代物理、准晶体结构、化学等领域都有直接的应用。

"""
输出斐波那契数列中的前20个数
"""
a, b = 0, 1
for _ in range(20):
    a, b = b, a + b
    print(a)

例子3:寻找水仙花数

要求:找出 100 到 999 范围内的所有水仙花数。

提示:在数论中,水仙花数(narcissistic number)也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个 N 位非负整数,其各位数字的 N 次方和刚好等于该数本身,例如: 153=13+53+33 ,所以 153 是一个水仙花数; 1634=14+64+34+44 ,所以 1634 也是一个水仙花数。对于三位数,解题的关键是将它拆分为个位、十位、百位,再判断是否满足水仙花数的要求,这一点利用 Python 中的//%运算符其实很容易做到。

"""
找出100到999范围内的水仙花数
"""
for num in raChina编程nge(100, 1000):
    low = num % 10
    mid = num // 10 % 10
    high = num // 100
    if num == low ** 3 + mid **python 3 + high ** 3:
        print(num)

例子4:百钱百鸡问题

说明:百钱百鸡是我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?翻译成现代文是:公鸡 5 元一只,母鸡 3 元一只,小鸡 1 元三只,用 100 块钱买一百只鸡,问公鸡、母鸡、小鸡各有多少只?

"""
百钱百鸡问题
"""
for x in range(0, 21):
    for y in range(0, 34):
        for z in range(0, 100, 3):
            if x + y + z == 100 and 5 * x + 3 * y + z // 3 == 100:
                print(f'公鸡: {x}只, 母鸡: {y}只, 小鸡: {z}只')
"""
百钱百鸡问题2
"""
for x in range(0, 21):
    for y in range(0, 34):
        z = 100 - x - y
        if z % 3 == 0 and 5 * x + 3 * y + z // 3 == 100:
            print(f'公鸡: {x}只, 母鸡: {y}只, 小鸡: {z}只')

例子5:CRAPS赌 博游戏

说明:CRAPS又称花旗骰,是美国拉斯维加斯非常受欢迎的一种的桌上赌 博游戏。该游戏使用两粒骰子,玩家通过摇两粒骰子获得点数进行游戏。简化后的规则是:玩家第一次摇骰子如果摇出了 7 点或 11 点,玩家胜;玩家第一次如果摇出 2 点、3 点或 12 点,庄家胜;玩家如果摇出其他点数则游戏继续,玩家重新摇骰子,如果玩家摇出了 7 点,庄家胜;如果玩家摇出了第一次摇的点数,玩家胜;其他点数玩家继续摇骰子,直到分出胜负。为了增加代码的趣味性,我们设定游戏开始时玩家有 1000 元的赌注,每局游戏开始之前,玩家先下 注,如果玩家获胜就可以获得对应下 注金额的奖励,如果庄家获胜,玩家就会输掉自己下 注的金额。游戏结束的条件是玩家破产(输光所有的赌注)。

"""
Craps赌博游戏
"""
import random
money = 1000
while money > 0:
    print(f'你的总资产为: {money}元')
    # 下注金额必须大于0且小于等于玩家的总资产
    while True:
        debt = int(input('请下 注: '))
        if 0 < debt <= money:
            break
    # 用两个1到6均匀分布的随机数相加模拟摇两颗色子得到的点数
    first_point = random.randrange(1, 7) + random.randrange(1, 7)

到此这篇关于Python循环结构解析的文章就介绍到这了,更多相关Python循环结构内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于Python循环结构全面解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155143

相关文章

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

Python自动化批量重命名与整理文件系统

《Python自动化批量重命名与整理文件系统》这篇文章主要为大家详细介绍了如何使用Python实现一个强大的文件批量重命名与整理工具,帮助开发者自动化这一繁琐过程,有需要的小伙伴可以了解下... 目录简介环境准备项目功能概述代码详细解析1. 导入必要的库2. 配置参数设置3. 创建日志系统4. 安全文件名处

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1