Python数字猜谜游戏如何过滤输入中的字母、符号等非法内容
猜数字游戏非法输入问题修复方案
你当前的代码崩溃根因是直接对用户输入做int()类型转换,当输入为空、包含字母、特殊符号时会触发ValueError异常导致程序直接退出,我们可以通过异常捕获逻辑处理这类场景,同时你原代码存在缩进语法错误,修复后的完整可运行代码如下:
from random import randint # 生成1-1000的随机目标数字 comp_num = randint(1, 1000) while True: input_str = input("请输入1-1000之间的整数进行猜测:\n") try: # 尝试把用户输入转为整数 user_num = int(input_str) except ValueError: # 捕获非数字输入的异常,给出提示后重新进入输入流程 print("输入不合法,请输入纯数字!") continue # 可选优化:限制输入数字在1-1000范围内 if user_num < 1 or user_num > 1000: print("请输入1到1000范围内的数字!") continue # 大小判断逻辑 if user_num > comp_num: print("太大了!再猜一次") elif user_num < comp_num: print("太小了!再猜一次") else: print("恭喜你猜对了!") break
如果需要保留原代码的英文提示,把对应print语句里的中文替换成原英文内容即可。
核心修改点说明
- 新增
try...except捕获ValueError异常,所有非数字格式的输入都会被拦截,不会触发程序崩溃 - 修正了原代码中混乱的缩进层级,符合Python语法规范
- 把多层嵌套的if判断优化为
elif分支,逻辑更清晰,可读性更高 - 新增可选的输入范围校验,避免用户输入超出1-1000范围的无效数字
内容的提问来源于stack exchange,提问作者Hollow
相关产品推荐
相关产品推荐

