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

Python程序出现UnboundLocalError:cleanCost未赋值问题求助

问题分析与修复方案

错误原因

  • 类型不匹配:你通过str(input(...))获取cleanType,得到的是字符串类型,但后续判断条件里却和整数1、2等做比较,所有分支都不会触发,导致cleanCost从未被赋值,计算totalCost时就会抛出未绑定局部变量的错误。
  • 未处理无效输入:即使类型匹配,若用户输入的不是1-4的选项,cleanCost依然会处于未定义状态。

修复步骤

  1. 统一输入与判断的类型:将cleanType转换为整数类型,或者把判断条件中的数字改为字符串(推荐转整数,因为输入是数字选项)。
  2. 添加默认值或错误处理:给cleanCost设置初始默认值,或者添加else分支处理无效输入,避免变量未定义。
  3. 修复字符串格式化:输出总价时,要正确插入变量值,否则会直接显示$totalCost字符串。

修正后的代码

def main():
    # 显示欢迎信息
    print("Hello, welcome to Hannah’s Cleaning Service!")

    # 获取房屋卧室数量
    houseSize = int(input("How many bedrooms is your home? "))

    # 获取清洁类型,转换为整数
    cleanType = int(input("""What type of cleaning would you like 
1=floors, 
2=windows, 
3=bathrooms, or 
4=dusting? """))

    # 根据清洁类型设置基础价格,添加默认值处理无效输入
    cleanCost = 0
    if cleanType == 1:
        cleanCost = 60
    elif cleanType == 2:
        cleanCost = 50
    elif cleanType == 3:
        cleanCost = 40
    elif cleanType == 4:
        cleanCost = 30
    else:
        print("Invalid cleaning type selected!")
        return  # 无效输入时直接退出函数

    # 根据房屋大小设置系数
    if houseSize <= 2:
        sizeFactor = 1
    elif houseSize == 3:
        sizeFactor = 2
    elif houseSize >= 4:
        sizeFactor = 3

    # 计算总价
    totalCost = cleanCost * sizeFactor

    # 显示总价,修复格式化
    print(f"Your total is ${totalCost}")

main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:55:24