有没有办法隐藏正确的名称错误消息?

时间:2015-02-05 03:42:59

标签: python python-3.x

我正在编写一个简单的函数,它将取一个数字的平方根。提示用户提供整数。但是,如果他们提供一个字符串 - 我希望有一条消息“你没有给我一个号码”。

见下面的代码:

def square(n):
    """Takes a square root of a number :rtype : int """
    if n == int(n):
        return pow(n, 2)

try:
    answer = int(input("...."))
except ValueError:
    print("You did not give me a number!")

final_answer = "{} squared is {}".format(answer, square(answer))
print(final_answer)

使用整数正常工作:

....9
9 squared is 81

使用字符串:

Traceback (most recent call last):
File , line 28, in <module>
final_answer = "{} squared is {}".format(answer, square(answer))
NameError: name 'answer' is not defined

You did not give me a number!

由于未定义答案,因此错误非常有意义。但是,有没有一种方法可以在没有NameError消息的情况下打印/返回异常“你没有给我一个号码”?

谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

您可以在else

的末尾添加try/except
try:
    answer = int(input("...."))
except ValueError:
    print("You did not give me a number!")
else:
    final_answer = "{} squared is {}".format(answer, square(answer))
    print(final_answer)

else块中的代码只有在try块成功完成时才会运行。以下是documentation的链接以获取更多信息。