如何基于用户选择的EFIR/EFLR电力套餐实现差异化用电计算
电力套餐计费程序实现
现有基础代码
原代码仅实现套餐选择功能:
# 电力套餐 # 可选电力套餐 eplan = input('请输入你的电力套餐(EFIR 或 EFLR): ') if eplan.lower() == 'efir': print('感谢你选择 EFIR 套餐') elif eplan.lower() == 'eflr': print('感谢你选择 EFLR 套餐') else: print('请输入套餐的正确缩写')
需求说明
实现用户选择EFIR或EFLR套餐后,输入月度用电量(对应代码:kwha = int(input('请输入当月用电量(单位:度): '))),系统根据所选套餐执行差异化计费逻辑,计算出当月电费。
完整实现代码
我们假设两种套餐的计费规则如下(可根据实际规则调整):
- EFIR套餐:阶梯计费,每月前300度按0.5元/度收费,超出300度的部分按0.7元/度收费
- EFLR套餐:统一单价,所有用电量均按0.6元/度收费
完整代码:
# 电力套餐计费程序 # 可选套餐:EFIR(阶梯计费)、EFLR(统一单价) # 选择套餐 eplan = input('请输入你的电力套餐(EFIR 或 EFLR): ') # 套餐验证与后续流程 if eplan.lower() == 'efir': print('感谢你选择 EFIR 套餐') # 获取当月用电量 try: kwha = int(input('请输入当月用电量(单位:度): ')) if kwha < 0: print('用电量不能为负数,请重新输入') else: # EFIR套餐计费逻辑 if kwha <= 300: total_cost = kwha * 0.5 else: total_cost = 300 * 0.5 + (kwha - 300) * 0.7 print(f'当月电费为:{total_cost:.2f} 元') except ValueError: print('请输入有效的数字作为用电量') elif eplan.lower() == 'eflr': print('感谢你选择 EFLR 套餐') # 获取当月用电量 try: kwha = int(input('请输入当月用电量(单位:度): ')) if kwha < 0: print('用电量不能为负数,请重新输入') else: # EFLR套餐计费逻辑 total_cost = kwha * 0.6 print(f'当月电费为:{total_cost:.2f} 元') except ValueError: print('请输入有效的数字作为用电量') else: print('请输入套餐的正确缩写(EFIR 或 EFLR)')
代码说明
- 加入异常处理:捕获用户输入非数字的情况,避免程序崩溃
- 增加合法性校验:判断用电量是否为负数
- 实现差异化计费逻辑:根据两种套餐的规则分别计算电费
- 输出结果保留两位小数,符合金额显示规范
内容的提问来源于stack exchange,提问作者xozra
相关产品推荐
相关产品推荐

