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

如何实现房间数量无效输入时循环重提示?附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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:41:13