You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python代码函数封装、输入验证及产品价格并排展示求助

改进后的Python产品订单处理代码

以下是满足需求的完整代码,包含功能封装、输入验证、并排展示等优化:

def process_product_order():
    products = []
    prices = []
    
    # 录入5次有效产品信息
    for _ in range(5):
        # 产品名称非空验证
        while True:
            product_name = input("请输入产品名称:")
            if product_name.strip():
                break
            print("产品名称不能为空,请重新输入!")
        
        # 产品价格有效验证(正整数)
        while True:
            try:
                product_price = int(input("请输入产品价格:"))
                if product_price > 0:
                    break
                print("价格必须是正整数,请重新输入!")
            except ValueError:
                print("输入的不是有效数字,请重新输入!")
        
        products.append(product_name)
        prices.append(product_price)
    
    # 冒泡排序:价格从高到低,同步调整产品顺序
    swapped = True
    while swapped:
        swapped = False
        for x in range(1, len(prices)):
            if prices[x] > prices[x-1]:
                # 交换价格
                prices[x-1], prices[x] = prices[x], prices[x-1]
                # 同步交换对应产品
                products[x-1], products[x] = products[x], products[x-1]
                swapped = True
    
    # 并排展示排序后的产品与价格
    print("\n排序后的产品列表(价格从高到低):")
    print(f"{'产品名称':<15} {'价格(£)':>10}")
    print("-" * 25)
    for name, price in zip(products, prices):
        print(f"{name:<15} {price:>10}")
    
    # 计算总价(最便宜的第5个产品免费)
    total_price = sum(prices) - prices[4]
    print(f"\n订单总价为 £{total_price}(第5个产品免费)")

# 执行函数
process_product_order()

关键改进说明

  • 功能封装:将所有逻辑封装到process_product_order()函数中,代码结构更清晰,可直接调用复用
  • 空输入验证:
    • 产品名称:通过strip()判断是否为空,循环直到输入有效名称
    • 产品价格:结合try-except处理非数字输入,同时验证价格为正整数,确保输入有效性
  • 并排展示:使用格式化字符串f"{name:<15} {price:>10}"实现左对齐产品名称、右对齐价格,搭配分隔线提升可读性
  • 排序逻辑优化:保持原冒泡排序逻辑,确保价格与产品名称始终同步交换,避免对应关系错乱
  • 总价计算优化:直接用总和减去第5个产品价格,避免修改原价格数组,逻辑更清晰

内容的提问来源于stack exchange,提问作者DonVeritas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:30:31