当前位置:首页>python>Python基础——循环结构——让程序学会重复

Python基础——循环结构——让程序学会重复

  • 2026-09-11 05:19:14
Python基础——循环结构——让程序学会重复

循环结构——让程序学会重复

1. 目标

掌握如何让程序重复执行代码块,并学会使用两种主要的循环结构。

2. 知识点

  • while 循环的基本语法

  • for 循环与 range() 函数

  • break 和 continue 语句控制循环流程

  • 循环中的 else 语句

  • 列表的基本操作(遍历)

3. 代码示例:进阶版购物小票——批量处理与重复输入

我们将继续升级“智能购物小票分析器”,这次让它能处理多个商品,并模拟收银台的连续服务。

python

# 第三天:循环结构 —— 智能收银台模拟器import randomimport time # 导入时间模块,用于模拟处理过程# --- 案例1:使用while循环处理多个商品(直到用户说停止)---print("=== 欢迎使用自助收银台 ===")print("请开始扫描商品(输入商品价格,输入0完成扫描):")total_price =0item_count =0# 使用while循环,因为不知道用户会输入多少次whileTrue:# 模拟扫描商品的过程# 注意:实际input需要用户输入,这里为了演示自动生成随机价格# 实际应用中,可以替换为:price_input = float(input("请输入商品价格: "))# 为了代码自动运行演示,我们生成随机价格,并用随机数模拟结束条件    price_input = random.randint(1,100)# 随机生成1-100元的商品# 随机有20%的概率结束购物(模拟用户输入0)if random.random()<0.2:print("  扫描完成(检测到结束信号)")break# break语句立即结束循环    item_count +=1    total_price += price_inputprint(f"  商品{item_count}: {price_input}元,当前总计: {total_price}元")    time.sleep(0.5)# 暂停0.5秒,让演示更有节奏感print(f"\n本次共购买 {item_count} 件商品,总计: {total_price}元")# --- 案例2:使用for循环处理固定数量的商品(比如称重商品)---print("\n--- 称重商品处理 ---")weight_items =["苹果","香蕉","橙子"]# 一个列表,存储商品名称prices_per_kg =[8.5,6.0,7.2]# 对应的每公斤价格print("正在处理称重商品:")# 使用for循环遍历列表for i inrange(len(weight_items)):# range(3) 生成 0, 1, 2    item_name = weight_items[i]    price_kg = prices_per_kg[i]# 随机生成重量 (0.2 到 2.0 公斤)    weight =round(random.uniform(0.2,2.0),2)    item_total = price_kg * weightprint(f"  {item_name}: {weight}kg × {price_kg}元/kg = {item_total:.2f}元")    total_price += item_totalprint(f"加上称重商品后,总计: {total_price:.2f}元")# --- 案例3:演示break和continue的使用(处理优惠券)---print("\n--- 优惠券核销系统 ---")coupon_codes =["SAVE20","INVALID","SAVE10","EXPIRED","SAVE5"]valid_coupons =0print("正在验证优惠券...")for code in coupon_codes:# 跳过无效或过期的优惠券if code =="INVALID"or code =="EXPIRED":print(f"  优惠券 '{code}' 无效,自动跳过。")continue# continue语句跳过本次循环剩余部分,进入下一次循环# 处理有效优惠券print(f"  优惠券 '{code}' 有效!正在应用优惠...")    valid_coupons +=1# 假设每张有效优惠券减5元    total_price -=5print(f"    已减5元,当前需支付: {total_price:.2f}元")# 如果优惠后金额低于20元,则停止使用更多优惠券if total_price <20:print("  优惠后金额已低于20元,停止使用更多优惠。")break# break语句提前结束整个循环print(f"\n共使用了 {valid_coupons} 张有效优惠券,最终需支付: {total_price:.2f}元")# --- 案例4:循环的else子句(检查是否所有商品都打折)---print("\n--- 全场折扣检查 ---")all_items_on_sale =True# 假设所有商品都参加活动items_checked =["苹果","牛奶","面包","饮料"]for item in items_checked:# 随机模拟某些商品可能不打折if random.choice([True,False]):# 随机True或Falseprint(f"  {item}: 参加活动")else:print(f"  {item}: 不参加活动")        all_items_on_sale =False# 这里不使用break,因为要检查完所有商品,找出所有不打折的# 这个else子句会在for循环正常结束(没有被break中断)时执行else:if all_items_on_sale:print("所有商品都参加全场折扣!您可以享受额外9折!")        total_price *=0.9print(f"应用折扣后,需支付: {total_price:.2f}元")else:print("部分商品不参加活动,无法享受全场折扣。")print(f"\n=== 购物完成,您本次共需支付: {total_price:.2f}元 ===")

4. 代码解释

  • while 循环:当条件为 True 时,重复执行代码块。while True 会创建一个无限循环,通常与 break 配合使用,在循环内部根据条件结束。

  • for 循环:通常用于遍历序列(如列表、字符串)或与 range() 函数配合,执行固定次数的循环。

    • range(n) 生成从 0 到 n-1 的整数序列。

    • range(start, stop, step) 可以生成更灵活的序列。

  • break 语句:立即终止当前循环(while 或 for),跳出循环体。

  • continue 语句:跳过当前循环迭代中剩余的语句,直接开始下一次迭代。

  • 循环的 else 子句:这是一个比较少用但很有特色的特性。当循环正常结束(即没有被 break 语句中断)时,会执行 else 块中的代码。

  • 列表:示例中引入了列表 [ ],它是一种可以存储多个数据的容器,我们将在下一天详细学习。

5. 运行结果示例(由于大量随机数,结果每次不同)

text

=== 欢迎使用自助收银台 ===请开始扫描商品(输入商品价格,输入0完成扫描):  商品1: 42元,当前总计: 42元  商品2: 87元,当前总计: 129元  商品3: 93元,当前总计: 222元  扫描完成(检测到结束信号)本次共购买 3 件商品,总计: 222元--- 称重商品处理 ---正在处理称重商品:  苹果: 1.25kg × 8.5元/kg = 10.62元  香蕉: 0.83kg × 6.0元/kg = 4.98元  橙子: 1.57kg × 7.2元/kg = 11.30元加上称重商品后,总计: 248.91元--- 优惠券核销系统 ---正在验证优惠券...  优惠券 'SAVE20' 有效!正在应用优惠...    已减5元,当前需支付: 243.91元  优惠券 'INVALID' 无效,自动跳过。  优惠券 'SAVE10' 有效!正在应用优惠...    已减5元,当前需支付: 238.91元  优惠券 'EXPIRED' 无效,自动跳过。  优惠券 'SAVE5' 有效!正在应用优惠...    已减5元,当前需支付: 233.91元共使用了 3 张有效优惠券,最终需支付: 233.91元--- 全场折扣检查 ---  苹果: 参加活动  牛奶: 不参加活动  面包: 参加活动  饮料: 参加活动部分商品不参加活动,无法享受全场折扣。=== 购物完成,您本次共需支付: 233.91元 ===

💡 学习建议与课后练习

  1. 动手运行:强烈建议你将代码复制到自己的Python环境中运行多次,观察 break 和 continue 如何影响循环的执行流程,以及循环的 else 子句何时被执行。

  2. 修改条件:

    • 尝试修改案例1中 while 循环的结束条件(比如改成随机数小于0.1才结束),看看平均每次购买的商品数量如何变化。

    • 修改案例3中提前结束循环的条件 total_price < 20,改为其他值,观察 break 何时触发。

  3. 小练习:

    • 练习1:修改案例1,使用 input() 函数让用户手动输入每个商品的价格,直到用户输入 0 为止,最后计算总价。

    • 练习2:编写一个简单的猜数字游戏升级版:程序随机生成一个1-100的数字,让用户循环猜,每次猜完后提示“猜大了”、“猜小了”或“猜中了”,并统计用户猜了多少次。如果用户输入 -1,则使用 break 退出游戏。

    • 练习3:使用 for 循环打印出 1 到 100 之间所有能被 3 整除的数字(提示:使用取模运算符 % 和 if 判断)。

最新文章

随机文章