简单的Python错误练习

时间:2016-11-24 21:11:28

标签: python

我有一个非常基本的任务,但我只是无法得到正在寻找的正确错误。这是作业:

  

10-6增加:当人们提供文本而不是数字时,会出现提示输入数字时的一个常见问题。当您尝试将输入转换为int时,您将获得TypeError。编写一个提示输入两个数字的程序。将它们一起添加并打印结果。如果任一输入值不是数字,则捕获TypeError,并打印友好的错误消息。通过输入两个数字然后输入一些文本而不是数字来测试您的程序。

这就是我所拥有的:

print("Please enter two numbers and this program will add them together!")
try:
    num_1 = int(input("What is your first number?"))
    num_2 = int(input("What is your second number?"))
    answer = num_1 + num_2
    print(str(num_1) + " + " + str(num_2) + " = " + str(answer))
except TypeError:
    print("Please make sure you enter a number next time.")

我现在已经重新安排了一个小时,无论我做什么,我都无法获得TypeError,只有一个ValueError。我怎么能在这里得到一个TypeError,或者这本书是错的,在这种情况下不可能得到TypeError?

3 个答案:

答案 0 :(得分:3)

>>> int('abc')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'abc'

这本书错了。

答案 1 :(得分:0)

尝试类似

时抛出TypeError
answer = 2 + '3'

你的练习有点误导,因为这样的情况永远不会发生在像你应该写的那个程序中。正如您所说,尝试将str显式转换为int时可以获得的错误是ValueError。所以是的,用

捕获ValueError
except ValueError:

你很高兴。

此外,您正在使用

行将int转换回str
answer = num_1 + str(num_2)

这是不正确的。你应该做的

answer = num_1 + num_2

答案 2 :(得分:0)

这本书没有错。这个问题实际上并未要求您转换为int

只需更改为num_1 = input("What is your first number?")num_2,如果其中一个输入是字符串,则会触发您的异常处理。

当然,由于该行&#34;它有点令人困惑;当你尝试将输入转换为int时,[...]&#34;但没有任何地方要求你明确地进行这种转换。它可能只是指在将+与整数和字符串一起使用时发生的隐式转换。

要了解有关Python的更多信息,您还可以测试如果两个输入都是字符串会发生什么。