📖 知识点回顾
try ... except 异常类型 as e:捕获异常并获取错误详情else:无异常时执行成功逻辑while 循环:重复提示用户输入,直到满足条件
ValueError:字符串无法转为整数时触发
⚔️ Kata 实战任务
任务需求:
封装函数
safe_input_num(),功能:安全读取用户输入的整数使用 while 循环持续接收输入,输入非法就重新提示,不退出
try 尝试将输入转为 int
except 捕获
ValueError as e,打印错误提示与异常详情else:输入合法,返回这个数字,结束循环
调用函数,获取数字并打印出来
参考代码
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
🧠 思考题
如果需求改成:支持输入小数(float),该怎么修改代码?
增加限制:输入数字必须大于 0,要在哪里添加判断?用 if 还是 raise?
行者孙Python