Python猜数字代码触发guess变量可能未定义警告能否忽略?
猜数字程序guess变量未定义警告相关问题解答
能不能直接忽略警告?
不能,该警告不是误报,确实存在会导致程序运行崩溃的场景。
会触发报错的具体场景
- 第一种:用户输入非数字内容。当用户输入的内容是字母、符号等无法转换为整数的内容时,
int(input(...))会直接抛出ValueError,此时guess变量还没完成赋值,程序跳出循环后执行最后的if判断时,就会触发NameError: name 'guess' is not defined导致程序直接崩溃。 - 第二种:代码迭代时误改初始参数。如果后续调整代码时不小心把
tries的初始值改成了0,while循环会直接不执行,guess变量从始至终都没有被定义,运行到最后一行if时也会直接报错。
修复方案
最简单的修复方式是在while循环前给guess设置一个初始值,比如 guess = 0,就能直接消除警告,也能规避上述报错场景。
也可以调整逻辑用while的else分支实现失败提示,不需要依赖循环外的guess变量,写法更规范:
import random print('Try to guess hidden number from 1 to 50, U have 6 tries by the way') hidden_num = random.randint(1, 50) tries = 6 while tries>0: guess = int(input(f'Guess the hidden number, tries left: {tries}\n')) tries -= 1 if guess == hidden_num: print('Great Job, You got it!') break elif guess < hidden_num: print('U were so close, take a bit higher') else: print('WowWo! Pick lower,Dude!') else: # 仅循环未被break中断(6次都没猜中)时执行 print('Don\'t be upset buddy, you have whole life ahead!')
内容的提问来源于stack exchange,提问作者Codi
相关产品推荐
相关产品推荐

