You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现电费计算代码出现语法错误求助

考试题

代码问题排查

  • 冗余输入:已经定义变量接收用电量输入,后续又重复弹出用电量输入框让用户二次输入,前期输入的变量完全没有被使用,逻辑冗余。
  • 字符串拼接错误:两处print语句用逻辑运算符and拼接内容,属于语法错误,Python中and仅用于逻辑判断,不能用来拼接输出内容。
  • 输出语句语法错误:无折扣分支的print语句中,字符串后直接用冒号连接变量,不符合Python语法规范。
  • while循环错误:
    • 循环体缩进异常,前面多了多余的空格,会触发缩进报错
    • 循环条件discount_contract != "yes" or "no"逻辑完全错误,该条件会永远返回True,正确写法应该是判断输入值不在("yes", "no")范围内
    • 循环内的输入结果没有赋值给discount_contract变量,永远无法退出循环
  • 折扣计算逻辑错误:VAT2 = VAT - D没有业务逻辑支撑,VAT是税率比例,D是配电总费用,二者单位不统一,计算结果无效。

修正后完整代码

name = input("请输入你的名字:")
surname = input("请输入你的姓氏:")
# 直接转成浮点型,避免重复输入
electric_amount = float(input("请输入用电量(单位:kwh):"))
discount_contract = input("你是否有折扣合同?(yes/no):")

# 循环校验输入合法性,直到用户输入yes或者no为止
while discount_contract not in ("yes", "no"):
    discount_contract = input("输入无效,请重新回答你是否有折扣合同?(yes/no):")

AU = 0.91555 
VAT = 0.18
DU = 0.2651

A = AU * electric_amount
D = DU * electric_amount
F = A * 0.007

total_before_VAT = A + D + F
total_electric_bill = (1 + VAT) * total_before_VAT

if discount_contract == "yes":
    # 可根据题目实际折扣规则调整此处计算逻辑
    total_electric_bill = total_electric_bill * 0.9
    print(f"尊敬的{name} {surname},")
    print(f"你本次用电量为{electric_amount}kwh,你有折扣合同,最终电费账单为:{round(total_electric_bill, 2)}")

if discount_contract == "no": 
    print(f"尊敬的{name} {surname},")
    print(f"你本次用电量为{electric_amount}kwh,无折扣合同,最终电费账单为:{round(total_electric_bill, 2)}")

内容的提问来源于stack exchange,提问作者NaNo Blin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:45:10