御险篇-Day52 综合 Kata:安全数字输入器

0 次阅读 2026-10-19 16:01

📖 知识点回顾

  • try ... except 异常类型 as e:捕获异常并获取错误详情

  • else:无异常时执行成功逻辑

  • while 循环:重复提示用户输入,直到满足条件

  • ValueError:字符串无法转为整数时触发

⚔️ Kata 实战任务

任务需求:

  1. 封装函数 safe_input_num(),功能:安全读取用户输入的整数

  2. 使用 while 循环持续接收输入,输入非法就重新提示,不退出

  3. try 尝试将输入转为 int

  4. except 捕获ValueError as e,打印错误提示与异常详情

  5. else:输入合法,返回这个数字,结束循环

  6. 调用函数,获取数字并打印出来

参考代码

def safe_input_num():
    while True:
        user_text = input("请输入一个整数:")
        try:
            num = int(user_text)
        except ValueError as e:
            print(f"❌ 输入不是合法整数!异常详情:{e}")
            print("请重新输入!\n")
        else:
            print("✅ 输入校验成功")
            return num

# 调用函数
result = safe_input_num()
print(f"你输入的数字是:{result}")

 

运行示例

请输入一个整数:abc
❌ 输入不是合法整数!异常详情:invalid literal for int() with base 10: 'abc'
请重新输入!

请输入一个整数:78.5
❌ 输入不是合法整数!异常详情:invalid literal for int() with base 10: '78.5'
请重新输入!

请输入一个整数:99
✅ 输入校验成功
你输入的数字是:99

 

🧠 思考题

  1. 如果需求改成:支持输入小数(float),该怎么修改代码?

  2. 增加限制:输入数字必须大于 0,要在哪里添加判断?用 if 还是 raise?