python入门之python的循环语句
一、循环语句while

循环语句就是重复的反复的执行某一部分代码。循环语句必须有指定的结束条件,否则会陷入死循环。
循环语句有两种控制方式:
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中的另一个循环语句,提供了更为强大的循环结构,它可以遍历任何序列,例如:字符串、列表、元组、字典、集合等。
例:输出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循环中常用的两个函数

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]} 只")
四、循环控制关键字

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
五、循环总结

1、while:
语法:while <条件>:,在条件为 True 时重复执行循环体。
使用场景:适用于循环次数不确定、取决于某一条件的场合,例如用户输入、等待状态等。
优点:在符合条件时会一直循环,直到条件为 False。
注意:要小心条件未被正确更新,否则可能会导致无限循环。
2、for:
语法:for <变量> in <可迭代对象>:,会遍历可迭代对象中的每一项。
使用场景:适用于遍历对象的场合,比如列表、字符串、字典、范围等。
优点:更简洁且适合预先知道循环次数的情况,自动获取对象的下一个元素。
常用:配合 range() 使用,生成一系列数值来进行循环。
3、总结
适用性:while 更适合基于条件的循环,for更适合遍历已知长度的对象。
循环终止:while 的终止由条件控制,for的终止由可迭代对象的范围控制。
灵活性:while 需要手动控制条件,for 循环的控制更为自动化。
作者:加德霍克