Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
洞察和异常错误处理:Python中的基本命令行游戏_Python_Project - Fatal编程技术网

洞察和异常错误处理:Python中的基本命令行游戏

洞察和异常错误处理:Python中的基本命令行游戏,python,project,Python,Project,我是一名初级Python程序员(Python3),我刚刚编写了第一个真正的工作程序。我在try:except:part(ln63)中遇到了一个问题,我无法在usr\u input()函数中触发range\u错误条件。我可能没有正确使用异常 来自随机导入randint def gen_num(): 魔数=randint(1100) 返回幻数 def usr_输入(范围错误=False): 如果范围_错误==真:#如果数字超出范围,则显示附加警告消息 打印(“确保输入一个介于1和100之间的数字!”

我是一名初级Python程序员(Python3),我刚刚编写了第一个真正的工作程序。我在try:except:part(ln63)中遇到了一个问题,我无法在usr\u input()函数中触发range\u错误条件。我可能没有正确使用异常

来自随机导入randint
def gen_num():
魔数=randint(1100)
返回幻数
def usr_输入(范围错误=False):
如果范围_错误==真:#如果数字超出范围,则显示附加警告消息
打印(“确保输入一个介于1和100之间的数字!”)
usr_num_guess=input(“请输入一个介于1和100之间的整数:”)
返回整数(usr\u num\u guess)
再次播放()
#我们要求用户选择是否要再次播放(是/否)
是=集合(['yes','y','ye','yeah','')
否=设置(['no','n']))
usr_choice=input(“您希望不再播放吗?(Y/n):”)。lower()
如果usr_选择“是”:
返回真值
elif usr_选择否:
返回错误
其他:
sys.stdout.write(“请写‘是’或‘否’”)
def player_level_initialize():
#设置用户所需的级别
容易程度=设置(['easy',1])
med_级别=设置(['med'、'med',2',])
硬级别=设置(['hard','hard',3])
level_choice=input(“请选择您的级别(简单、中等、困难):”)。lower()
如果(轻松级别中的级别选项):
返回“轻松”
elif(医学级别的级别选择):
返回“med”
elif(硬级别中的级别选择):
返回“硬”
其他:
sys.stdout.write(“请写'easy'、'med'或'hard'”)
打印(“您好,欢迎来到这个精彩的游戏!”)
玩家名称=输入(“请输入您的姓名:”)
级别=玩家级别初始化()
继续玩=真
usr_得分=0
while(keep_playing==True):
num_to_guess=gen_num()
尝试次数=1
太多尝试=错误
最大尝试次数={
“容易”:10,
“医学”:6,
“硬”:3
}
usr_num_guess=usr_输入()
而(太多尝试==False或usr\u num\u guess!=num\u to\u guess):
如果(尝试次数<最大尝试次数[级别]:
尝试:
(usr_num_guess>=1,usr_num_guess<100)
除:
usr_num_guess=usr_input(True)#如果输入的数字超出范围,玩家将收到警告消息+新输入
其他:
如果(usr_num_guess!=num_to_guess):
如果(usr_num_guess
您需要的是一个
if
块,而不是一个
试除
块:

if not (usr_num_guess >= 1 and usr_num_guess < 100):
    usr_num_guess = usr_input(True) # If the input number is out of range, the player gets a warning message + new input
该代码将捕获所有可能的异常,并执行
块中的th代码,但
块除外,该块用于修复该情况。这可能不是你大多数时候想要的。例如,拼写错误的变量(例如,
usr\u num\u猜测
)将引发一个
名称错误
,而
user\u input()
所做的任何事情都不会修复该错误——这已经是一个与超出范围的输入完全不同的问题。您应该只捕获和处理代码可以处理的异常,例如:

except ValueError:
    ...

为什么要使用带有NameError异常的
try
try
将捕获运行时错误,而不是错误条件……哦,我想我明白了!那么只返回Python调试器捕获的异常?
except ValueError:
    ...