如何实现房间数量无效输入时循环重提示?附Python代码修复需求
房间数量输入验证逻辑修复
需要实现房间数量输入范围限制在1-8,当输入无效时显示invalid input,并持续提示用户重新输入,直到获取有效输入后再执行后续服务计费逻辑。目前服务类型输入无效时已实现返回Sorry! Invalid service input的逻辑,需为房间数量输入对齐该机制。原代码的循环逻辑存在明显错误,以下是修正后的完整代码:
def main(): small = 60 medium = 120 large = 145 serv_one = 40 serv_two = 80 # 循环获取有效房间数量输入 while True: try: num_rooms = int(input("请输入房屋的房间数量:")) # 验证输入是否在1-8范围内 if 1 <= num_rooms <= 8: break print("invalid input") except ValueError: # 捕获非整数输入的异常,同样提示无效 print("invalid input") # 循环获取有效服务类型输入(对齐原有逻辑) while True: serv_type = input("请选择清洁服务类型?(地毯清洁/窗户清洁):") if serv_type in ["地毯清洁", "窗户清洁"]: break print("Sorry! Invalid service input") # 计算并输出对应费用 if num_rooms <= 2: print("正在计算小型房屋的费用...") total_cost = small + (serv_one if serv_type == "地毯清洁" else serv_two) elif 3 <= num_rooms <= 5: print("正在计算中型房屋的费用...") total_cost = medium + (serv_one if serv_type == "地毯清洁" else serv_two) else: # 覆盖6-8间的情况 print("正在计算大型房屋的费用...") total_cost = large + (serv_one if serv_type == "地毯清洁" else serv_two) print(f"服务总费用:${total_cost}") main()
修正关键点
- 重构房间数量输入逻辑:用
while True循环持续获取输入,直到输入为1-8之间的整数才退出循环,完全符合需求中的“持续提示直到有效”机制 - 增加异常处理:解决了原代码中输入非整数直接崩溃的问题,非数字输入同样提示
invalid input - 修正原代码的逻辑错误:原代码循环结构混乱、条件判断语法错误(如
int(numRooms) > 8 in restart)的问题全部修复 - 对齐服务类型验证逻辑:同样用循环确保获取有效服务类型后再执行计费,保持代码逻辑一致性
- 简化重复代码:用三目运算符替换重复的if-elif分支,让计费逻辑更简洁易读
内容的提问来源于stack exchange,提问作者Eddie Figueroa
相关产品推荐
相关产品推荐

