求和,求平均,排序
用AI写的一个程序,方便后续进行核对菜的金额计算,并找出最贵的菜
点击查看代码
print("🍽️ 菜品消费统计系统")
print("请输入菜品名称和金额,我来帮你统计分析")
# 使用字典列表存储菜品信息
dishes = [] # 每个元素是 {'name': 菜品名, 'price': 金额}
print("\n提示:每行输入 菜品名 金额,用空格分隔")
print("例如:鱼香肉丝 48.5")
print("输入完成后输入 q 结束")
while True:
user_input = input("\n请输入菜品和金额: ").strip()
if user_input.lower() == 'q':
break
if not user_input:
print("输入不能为空,请重新输入")
continue
parts = user_input.split()
if len(parts) < 2:
print("格式错误!请输入:菜品名 金额")
continue
# 获取菜品名(可能是多个单词,如"鱼香肉丝"或"宫保鸡丁")
dish_name = parts[0] if len(parts) == 2 else ' '.join(parts[:-1])
try:
price = float(parts[-1]) # 最后一个部分是金额
if price <= 0:
print("金额必须是正数!")
continue
# 添加到菜品列表
dishes.append({'name': dish_name, 'price': price})
print(f"✓ 已添加:{dish_name} - ¥{price:.2f}")
except ValueError:
print("金额必须是数字!")
if not dishes:
print("没有输入菜品信息")
else:
# 提取所有金额用于统计
prices = [dish['price'] for dish in dishes]
count = len(prices)
total = sum(prices)
average = total / count
max_price = max(prices)
min_price = min(prices)
# 找到最贵和最便宜的菜品
most_expensive = [dish for dish in dishes if dish['price'] == max_price]
cheapest = [dish for dish in dishes if dish['price'] == min_price]
# 按价格排序
sorted_dishes_asc = sorted(dishes, key=lambda x: x['price']) # 升序
sorted_dishes_desc = sorted(dishes, key=lambda x: x['price'], reverse=True) # 降序
print("\n" + "=" * 60)
print("🍴 菜品消费统计报告")
print("=" * 60)
print("\n【1. 所有菜品列表】")
for i, dish in enumerate(dishes, 1):
print(f" {i:2d}. {dish['name']:15} ¥{dish['price']:>8.2f}")
print("\n【2. 按价格排序】")
print("→ 从便宜到贵:")
for i, dish in enumerate(sorted_dishes_asc, 1):
print(f" {i:2d}. {dish['name']:15} ¥{dish['price']:>8.2f}")
print("\n→ 从贵到便宜:")
for i, dish in enumerate(sorted_dishes_desc, 1):
print(f" {i:2d}. {dish['name']:15} ¥{dish['price']:>8.2f}")
print("\n【3. 消费统计】")
print(f"菜品总数:{count} 道")
print(f"消费总额:¥{total:.2f}")
print(f"平均每道菜:¥{average:.2f}")
print("\n【4. 最贵菜品】")
for dish in most_expensive:
print(f" {dish['name']} - ¥{dish['price']:.2f}")
print("\n【5. 最便宜菜品】")
for dish in cheapest:
print(f" {dish['name']} - ¥{dish['price']:.2f}")
print("\n【6. 价格区间】")
print(f"最高:¥{max_price:.2f}")
print(f"最低:¥{min_price:.2f}")
print(f"价格范围:¥{max_price - min_price:.2f}")
# 按价格区间分组
if count > 1:
sorted_prices = sorted(prices)
if count % 2 == 1:
median_price = sorted_prices[count // 2]
else:
median_price = (sorted_prices[count // 2 - 1] + sorted_prices[count // 2]) / 2
print(f"\n【7. 价格分布】")
print(f"中位数价格:¥{median_price:.2f}")
# 按价格区间统计
if max_price > 0:
print("\n 价格区间统计:")
ranges = [(0, 20), (20, 50), (50, 100), (100, float('inf'))]
range_labels = ["0-20元", "20-50元", "50-100元", "100元以上"]
for (low, high), label in zip(ranges, range_labels):
if high == float('inf'):
in_range = [dish for dish in dishes if dish['price'] >= low]
else:
in_range = [dish for dish in dishes if low <= dish['price'] < high]
if in_range:
range_total = sum(dish['price'] for dish in in_range)
print(f" {label:10}:{len(in_range):2d}道菜,总计¥{range_total:.2f}")
print("=" * 60)
# 交互式查询功能
while True:
print("\n【查询功能】")
print("1. 查找菜品")
print("2. 按价格范围筛选")
print("3. 计算人均消费(输入人数)")
print("4. 显示总计和最大最小")
print("5. 退出")
choice = input("请选择功能(1-5): ").strip()
if choice == '5':
print("感谢使用菜品消费统计系统!")
break
elif choice == '1':
search = input("请输入菜品名关键词: ").strip()
found = [dish for dish in dishes if search.lower() in dish['name'].lower()]
if found:
print(f"找到 {len(found)} 个菜品:")
for dish in found:
print(f" {dish['name']} - ¥{dish['price']:.2f}")
else:
print("未找到相关菜品")
elif choice == '2':
try:
min_p = float(input("最低价格: ") or 0)
max_p = float(input("最高价格: ") or float('inf'))
filtered = [dish for dish in dishes if min_p <= dish['price'] <= max_p]
if filtered:
print(f"在¥{min_p:.2f}到¥{max_p:.2f}范围内找到 {len(filtered)} 个菜品:")
for dish in filtered:
print(f" {dish['name']} - ¥{dish['price']:.2f}")
subtotal = sum(dish['price'] for dish in filtered)
print(f" 小计:¥{subtotal:.2f}")
else:
print("该价格范围内无菜品")
except ValueError:
print("请输入有效的价格")
elif choice == '3':
try:
people = int(input("用餐人数: "))
if people > 0:
per_person = total / people
print(f"\n用餐人数:{people}人")
print(f"消费总额:¥{total:.2f}")
print(f"人均消费:¥{per_person:.2f}")
# 推荐菜品搭配
if len(sorted_dishes_asc) >= 2:
print("\n推荐搭配:")
print(f" 实惠选择:{sorted_dishes_asc[0]['name']}(¥{sorted_dishes_asc[0]['price']:.2f}) + "
f"{sorted_dishes_asc[1]['name']}(¥{sorted_dishes_asc[1]['price']:.2f})")
print(f" 合计:¥{sorted_dishes_asc[0]['price'] + sorted_dishes_asc[1]['price']:.2f}")
else:
print("人数必须大于0")
except ValueError:
print("请输入有效人数")
elif choice == '4':
print(f"\n【消费汇总】")
print(f"菜品总数:{count}道")
print(f"消费总额:¥{total:.2f}")
print(f"平均价格:¥{average:.2f}")
print(f"最贵菜品:{most_expensive[0]['name']} ¥{max_price:.2f}")
print(f"最便宜菜品:{cheapest[0]['name']} ¥{min_price:.2f}")
else:
print("请输入1-5之间的选项")


浙公网安备 33010602011771号