python入门之python的循环语句

一、循环语句while

while是python中常见的循环语句

循环语句就是重复的反复的执行某一部分代码。循环语句必须有指定的结束条件,否则会陷入死循环。

循环语句有两种控制方式:

1、条件控制

例:去超市买苹果,每个苹果重量不一样,直到买到10斤为止。

import random

weight = 0.0  # 总重量初始化为 0
count = 0     # 记录苹果的个数

print("开始购买苹果,每个苹果的重量随机在 0.5 到 1.5 斤之间。")

while weight < 10:  # 目标是买到 10 斤或以上
    apple = round(random.uniform(0.5, 1.5), 2)  # 随机生成重量,并保留两位小数
    weight += apple  # 累加总重量
    count += 1        # 计数加一
    print(f"第 {count} 个苹果的重量:{apple} 斤,当前总重量:{weight:.2f} 斤")

print(f"\n购买完成!一共买了 {count} 个苹果,总重量为 {weight:.2f} 斤。")

2、计数控制

例:去超市买10个苹果。

import random

weight = 0.0  # 初始化总重量
count = 0     # 初始化已购买苹果的数量

print("开始购买苹果,每个苹果的重量随机在 0.5 到 1.5 斤之间。")

while count < 10:  # 循环直到买到 10 个苹果
    apple = round(random.uniform(0.5, 1.5), 2)  # 随机生成苹果重量,并保留两位小数
    weight += apple  # 累加总重量
    count += 1        # 计数加一
    print(f"第 {count} 个苹果的重量:{apple} 斤,当前总重量:{weight:.2f} 斤")

print(f"\n购买完成!一共买了 {count} 个苹果,总重量为 {weight:.2f} 斤。")

在python中,循环语句的实现关键字是while 和 for

二、循环语句for

for也是python中常见的循环语句

for是python中的另一个循环语句,提供了更为强大的循环结构,它可以遍历任何序列,例如:字符串、列表、元组、字典、集合等。

例:输出100到999之间的所有水仙花数。

for num in range(100, 1000):
    # 分解出百位、十位和个位
    hundreds = num // 100        # 百位
    tens = (num // 10) % 10      # 十位
    units = num % 10             # 个位
    
    # 检查是否为水仙花数
    if hundreds**3 + tens**3 + units**3 == num:
        print(num)

临时变量的作用域:

因为python没有{}表示代码的域,所以从语法来说,临时变量在循环结束之后还是可以使用的,但是它可能会造成不可预知的错误。所以建议若想在循环结束后使用这个临时变量,就在循环前先定义一下。

例:用户由键盘输入用户名和密码,分别保存在user和psd中。

n = 5 # 事先定义最大尝试次数避免未定义的警告

# 循环最多尝试5次
for a in range(n):
    # 从键盘输入用户名和密码
    user = input("请输入用户名: ")
    psd = input("请输入密码: ")

    # 验证用户名和密码是否正确
    if user == "admin" and psd == "666888":
        print("登录成功")
        break  # 登录成功,退出循环
    else:
        print("用户名或密码错误,请重新登录")

# 如果达到最大尝试次数
if a == n - 1:
    print("登录失败,已达到最大尝试次数")

三、for循环中常用的两个函数

range(0, 10, 2)表示从0循环到10,步长为2

1、range()函数

功能:返回一个整数序列

语法:range(起始值start, 终止值end, 步长值step)

注意:range返回的区间范围是 [start , end),也就是说不包含终值end

参数1,start默认是0,可以省略不写

参数2,end没有默认值,不可以省略

参数3,step默认值为1,可以省略不写

例:1到100累加求和。

s = 0  # 初始化累加和为 0

# 使用 range(1, 101) 生成从 1 到 100 的数字
for num in range(101):
    s += num  # 累加每个数字到 s

print(f"1 到 100 的累加和为:{s}")

2、len()函数

功能:返回一个序列[字符串、列表、元组等]的长度或者元素个数。

参数:序列[字符串、列表、元组等]

通常和range配合使用,用于序列中元素的计算。

例:用一百块钱买一百只鸡, 共有哪几种买法?

solutions = []

# x 表示公鸡数量,y 表示母鸡数量,z 表示小鸡数量
for x in range(21):  # 公鸡最多能买 20 只(因为 20 * 5 = 100)
    for y in range(34):  # 母鸡最多能买 33 只(因为 33 * 3 = 99)
        z = 100 - x - y  # 计算小鸡数量
        # 检查总价格是否为 100 元
        if 5 * x + 3 * y + z / 3 == 100:
            solutions.append((x, y, z))

# 输出结果
print("共有", len(solutions), "种买法")
for solution in solutions:
    print(f"公鸡: {solution[0]} 只, 母鸡: {solution[1]} 只, 小鸡: {solution[2]} 只")

四、循环控制关键字

break退出循环的流程示意图
for i in range(10):
    print(i)

这个循环正常结束时,i为10

也就是在循环执行过程中,不加特定条件,循环一直执行直到正常结束为止。

若想在循环执行过程中,控制循环,需要添加关键字:

1、break

结束本层循环

例:玩家需要猜一个隐藏数字,一共有5次猜测机会。

# 猜数字游戏
num = 42  # 预设的秘密数字
a = 5  # 最大尝试次数

for b in range(a):
    g = int(input("请输入你猜的数字(0-100):"))  # 用户输入猜测的数字

    if g == num:  # 检查用户猜测是否正确
        print("恭喜你,猜对了!")
        break  # 猜对了,提前结束循环
    else:
        print("猜错了,请再试。")

if b == a - 1:  # 如果用户用了完所有尝试次数
    print("很遗憾,你没有猜对,正确答案是:", num)

2、continue

结束本次循环、继续下一次循环

例:设计一个逢7过的小游戏,输出100以内结果。

# 逢7过游戏
for num in range(1, 101):  # 从1到100
    if num % 7 == 0 or '7' in str(num):  # 判断是否是7的倍数或包含7
        continue  # 跳过本次循环
    print(num)  # 输出数字

注意:

  • 在python中,else是可以和循环结合使用的

  • 当循环是正常结束的时候,则执行else

  • 当循环非正常结束的时候,则不执行else

  • 五、循环总结

    python函数中经常出现循环

    1、while:

  • 语法:while <条件>:,在条件为 True 时重复执行循环体。

  • 使用场景:适用于循环次数不确定、取决于某一条件的场合,例如用户输入、等待状态等。

  • 优点:在符合条件时会一直循环,直到条件为 False。

  • 注意:要小心条件未被正确更新,否则可能会导致无限循环。

  • 2、for:

  • 语法:for <变量> in <可迭代对象>:,会遍历可迭代对象中的每一项。

  • 使用场景:适用于遍历对象的场合,比如列表、字符串、字典、范围等。

  • 优点:更简洁且适合预先知道循环次数的情况,自动获取对象的下一个元素。

  • 常用:配合 range() 使用,生成一系列数值来进行循环。

  • 3、总结

  • 适用性:while 更适合基于条件的循环,for更适合遍历已知长度的对象。

  • 循环终止:while 的终止由条件控制,for的终止由可迭代对象的范围控制。

  • 灵活性:while 需要手动控制条件,for 循环的控制更为自动化。

  • 作者:加德霍克

    物联沃分享整理
    物联沃-IOTWORD物联网 » python入门之python的循环语句

    发表回复