Python|每日一练|阶梯电费|分段判断|浮点数|四舍六入五成双:小玉家的电费

题目名称:小玉家的电费

时间限制:1000ms内存限制:256M

题目描述

夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了。小玉家今天收到了一份电费通知单。小玉看到上面写:据闽价电[2006]27号规定,月用电量在150千瓦时及以下部分按每千瓦时0.4463元执行,月用电量在151~400千瓦时的部分按每千瓦时0.4663元执行,月用电量在401千瓦时及以上部分按每千瓦时0.5663元执行;小玉想自己验证一下,电费通知单上应交电费的数目到底是否正确呢。请编写一个程序,已知用电总计,根据电价规定,计算出应交的电费应该是多少。

输入描述:

输入一个整数,表示用电总计(单位以千瓦时计),不超过10000。

输出描述:

输出一个数,保留到小数点后1位(单位以元计,保留到小数点后1位)。

示例 

示例1

输入267复制

输出121.5复制

提示

解题思路:

1、阶梯电价采用分段条件判断

if amount <=150:

            result=amount*0.4463

        elif  amount <=400 and amount>150:

            result=150*.4463+(amount-150)*0.4663

        elif amount>400:

            result = 150 * .4463 + (400 - 150) * 0.4663+(amount-400)*0.5663

2、保留到小数点后1位,按浮点数输出:

方法1:浮点格式化

无论如何都可以保留两位小数,而且符合四舍五入规则。

print("%.2f" %result)
# 1
、结果存在,按四舍五入规则计算

# 2、当小数位不足时,会在尾部补充0。
# 3、当不存在小数时,会在尾部补充0至要求位数。

方法2: round(内置函数):较为简洁

小数部分位数大于等于要保留的位数时,四舍五入输出。

PS:假设需要保留2位小数,但当计算结果无2位及以上小数时,直接输出,不会补充0。

方法3: decimal(精确计算):四舍六入五成双

from decimal import Decimal

result= 121.50209999999998

Decimal(result).quantize(Decimal("0.00")) #保留小数点后两位

Out[10]: Decimal('121.50')

参考代码:

class Solution:
    def __init__(self) -> None:
        pass

    def solution(self, amount):
        result = None

        # TODO: 请在此编写代码
        if amount <=150:
            result=amount*0.4463
        elif  amount <=400 and amount>150:
            result=150*.4463+(amount-150)*0.4663
        elif amount>400:
            result = 150 * .4463 + (400 - 150) * 0.4663+(amount-400)*0.5663
        return round(result, 1)


if __name__ == "__main__":
    amount = int(input().strip())
    sol = Solution()
    result = sol.solution(amount)

    print(result)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

打酱油的工程师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值