我正在编写一个简单的函数,它将取一个数字的平方根。提示用户提供整数。但是,如果他们提供一个字符串 - 我希望有一条消息“你没有给我一个号码”。
见下面的代码:
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消息的情况下打印/返回异常“你没有给我一个号码”?
谢谢你的帮助!
答案 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的链接以获取更多信息。