Python编程练习与解答 练习66:不要再花钱了

2013年2月4日是加拿大皇家铸市局发行硬币的最后一天。既然便士已经被淘汰,零售商必须调整总数,使它们在用现金支付时是(5美分的倍数(信用卡和借记卡交易继续以1美分计)。虽然零售商在这方面有一定的自由度,但大多数人会选择四舍五入到最接近5美分的价格。

编写一个程序,从用户那里读取价格,直到输入空行为止。在一行显示所有输入项的总成本,在第二行显示客户用现金支付的应付金额。现金付款的金额应四舍五入到最接近的5美分。计算现金支付金额的一种方法是首先确定总共需要支付多少便士。然后计算号总便士数除以5的余数。最后,如果余数小于2.5,则向下调整总数。否则向上调整总数
tips:

1.怎么解决空行的问题

2.余数的问题怎么添加

#首先定义总价为0以及要输入的第一个商品的价格
#注意这里的价格sale不要加float或者int等定义数据类型的符号,
#因为我们需要使用空格来终止程序,如果提前定义数据类型,当输入空格时程序不能识别,就会报错
con=0
sale=(input("请输入价格"))
while sale != "":
#在计算总额时再对价格数据进行定义
    con += float(sale)
    sale=(input("请输入价格"))
print(f"总成本为{con}")
#第二个循环
#计算余数YUSHU,由于我们默认以元为单位,如果直接计算余数也是元,而我们增加或则减少的是分,因此乘以100按分进行计算。
YUSHU=con*100%5
if YUSHU>2.5:
    yingfucon=con+5-YUSHU
else:
    yingfucon=con-YUSHU
print("应付金额为%.2f"%(yingfucon))

 

# 设置初始值  也就是第一个商品价格
num=input("请输入商品的价格")
sum=0
# 开始循环 当输入值为空时结束循环
while num!="":
    # 将输入的价格转成浮点型
    price=float(num)
    sum+=price
    # 将元转化为分
    sum_coin=sum*100
    # 进入下一轮循环
    num = input("请输入商品的价格")
print(sum)
# 计算余数
remainder=sum_coin%5
if remainder>2.5:
    # 计算出新的价格
    new_sum_coin=sum_coin-remainder+5
    # 将新的价格由美分转化为美元
    new_sum = new_sum_coin / 100
else:
    new_sum_coin = sum_coin - remainder
    new_sum=new_sum_coin/100
print(new_sum)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值