Python 打印购物小票

打印购物小票

需求:

  • 指定折扣
  • 输入购买商品单价与数量、顾客交费
  • 结算时打印购物小票,计算此次购物总金额,顾客交费,商店找补,以及购物积分
  • 钱不够时,提醒顾客继续交钱
  • 只给三次交钱机会
"""
功能:打印购物小票
作者:Fulling
日期:2021年11月7日
"""

# 输入部分
discount = 0.8  # 8折优惠
price1 = float(input("输入运动衫单价:"))
amount1 = int(input('输入运动衫购买数量:'))
price2 = float(input("输入网球鞋单价:"))
amount2 = int(input('输入网球鞋购买数量:'))
price3 = float(input("输入网球拍单价:"))
amount3 = int(input('输入网球拍购买数量:'))
payment = float(input('顾客实际交费:'))

# 处理部分
money = (price1 * amount1 + price2 * amount2 + price3 * amount3) * discount  # 计算购物金额
points = int(money // 33)  # 计算购物积分

# 输出部分
print('***************消费单**************')
print('%-8s%-6s%-6s%-6s' % ('购买物品', '单价', '数量', '金额'))
print('%-8s%-8.2f%-8d%-8.2f' % ('运动衫', price1, amount1, price1 * amount1))
print('%-8s%-8.2f%-8d%-8.2f' % ('网球鞋', price2, amount2, price2 * amount2))
print('%-8s%-8.2f%-8d%-8.2f' % ('网球拍', price3, amount3, price3 * amount3))
print('***********************************')
print('折扣:{}折'.format(int(discount * 10)))
print('消费总金额:¥{}'.format(round(money, 2)))
print('实际交费:¥{}'.format(payment))

# 三次机会
if payment > money:
    change = payment - money  # 计算找钱
    print('找钱:¥{}'.format(round(change, 2)))
    print('本次购物所获得的积分:{}'.format(points))
else:
    for i in range(0, 3):
        if payment >= money:
            change = payment - money  # 计算找钱
            print('找钱:¥{}'.format(round(change, 2)))
            print('本次购物所获得的积分:{}'.format(points))
            break
        else:
            print('支付金额不够,还需支付{:.2f}'.format(float(money - payment)))
            payment = float(input('继续支付:')) + payment
            if i == 2:
                print('钱不够,不卖了')

钱不够时 输出结果:

输入运动衫单价:59.9
输入运动衫购买数量:1
输入网球鞋单价:158.9
输入网球鞋购买数量:1
输入网球拍单价:218
输入网球拍购买数量:2
顾客实际交费:500
***************消费单**************
购买物品    单价    数量    金额    
运动衫     59.90   1       59.90   
网球鞋     158.90  1       158.90  
网球拍     218.00  2       436.00  
***********************************
折扣:8折
消费总金额:¥523.84
实际交费:¥500.0
支付金额不够,还需支付23.84
继续支付:10
支付金额不够,还需支付13.84
继续支付:10
支付金额不够,还需支付3.84
继续支付:2
钱不够,不卖了

钱够时 输出结果:

输入运动衫单价:59
输入运动衫购买数量:2
输入网球鞋单价:158
输入网球鞋购买数量:1
输入网球拍单价:200
输入网球拍购买数量:1
顾客实际交费:800
***************消费单**************
购买物品    单价    数量    金额    
运动衫     59.00   2       118.00  
网球鞋     158.00  1       158.00  
网球拍     200.00  1       200.00  
***********************************
折扣:8折
消费总金额:¥380.8
实际交费:¥800.0
找钱:¥419.2
本次购物所获得的积分:11
  • 7
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iFulling

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值