如何解决为什么 try/except 不捕获 NameError?
定义等级(分数): 尝试: 如果分数 >= .9: 返回'A' elif 分数 >= .8: 返回'B' elif 分数 >= .7: 返回'C' elif 分数 >= .6: 返回“D” elif 分数
x = 成绩(完美)
打印(x)
解决方法
错误/异常发生在 x = grades(perfect) 而不是在您的函数等级内,您有 try/except 块。编译器不允许将未定义的变量(完美)用作参数。
虽然没有多大意义,但请尝试以下操作:
try:
x = grades(perfect)
except NameError:
print('bad score')
为了使函数等级在 try/catch 方面有意义,您总是将定义的变量作为参数传递,然后将变量转换为浮点数(对于这种特定情况)。如果变量是字符串,那么您可以捕获 ValueError 异常。如果变量为 = None,则捕获 TypeError 异常:
def grades(score):
try:
_score = float(score)
if _score >= .9: return 'A'
elif _score >= .8: return 'B'
elif _score >= .7: return 'C'
elif _score >= .6: return 'D'
elif _score <= .59: return 'F'
else: return 'Bad Score'
except ValueError: print('bad score')
except TypeError: print('bad score')
x =等级('完美')
打印(x)
或
完美 = 无
x = 成绩(完美)
打印(x)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。