INPUT CHECKPOINT

input() 输入验证流程模拟器

一个可靠的输入流程,不会期待用户永远输入正确;它会把失败当成预期分支来处理。

数据当前走到哪里?等待开始
01 / READ

input() 读取

拿到键盘输入后,正常情况下一律得到 str,数字外观不会自动变成数字类型。

02 / CONVERT

类型转换

执行 int(raw)。无法解释成整数时抛出 ValueError

03 / CHECK

业务范围检查

转换成功也未必合理,还要确认数值是否落在 0~150。

OK / RETURN

接受并继续

返回已经验证过的值,后续计算可以相信它的类型与范围。

EOF

输入流结束

input() 没有读到任何数据时抛出 EOFError;它不是普通的空字符串。

EXCEPT / RETRY

说明哪里不对

捕获转换错误或提示范围错误,不让程序直接崩溃。

WHILE TRUE

回到入口再问一次

失败不退出函数,循环会取队列中的下一次输入;成功时用 returnbreak 离开。

准备就绪:点击“单步前进”观察每个判断,或自动跑完整条流程。

输入票据

input() → str

用户键入 42,原始结果仍是字符串 "42"。要计算,先明确转换。

ValueError

int("二十") 不是类型不匹配,而是内容无法转换,因此进入值错误分支。

空行 ≠ EOF

直接按回车通常得到 "";EOF 表示输入源已经结束,会走异常分支。

while + try

循环负责重试,try/except 负责接住可预料的转换失败,各自分工。

避坑提醒:不要用一个宽泛的 except: 把所有问题都吞掉。只捕获当前步骤能处理的异常,比如转换时的 ValueError、输入结束时的 EOFError,程序出了别的问题才不会悄悄被藏住。