Python程序出现UnboundLocalError:cleanCost未赋值问题求助
问题分析与修复方案
错误原因
- 类型不匹配:你通过
str(input(...))获取cleanType,得到的是字符串类型,但后续判断条件里却和整数1、2等做比较,所有分支都不会触发,导致cleanCost从未被赋值,计算totalCost时就会抛出未绑定局部变量的错误。 - 未处理无效输入:即使类型匹配,若用户输入的不是1-4的选项,
cleanCost依然会处于未定义状态。
修复步骤
- 统一输入与判断的类型:将
cleanType转换为整数类型,或者把判断条件中的数字改为字符串(推荐转整数,因为输入是数字选项)。 - 添加默认值或错误处理:给
cleanCost设置初始默认值,或者添加else分支处理无效输入,避免变量未定义。 - 修复字符串格式化:输出总价时,要正确插入变量值,否则会直接显示
$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
相关产品推荐
相关产品推荐

