首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >简单Python错误练习

简单Python错误练习
EN

Stack Overflow用户
提问于 2016-11-24 21:11:28
回答 3查看 329关注 0票数 0

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

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

以下是我所拥有的:

代码语言:javascript
运行
复制
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呢?

EN

回答 3

Stack Overflow用户

发布于 2016-11-24 21:13:33

代码语言:javascript
运行
复制
>>> int('abc')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'abc'

这本书错了。

票数 3
EN

Stack Overflow用户

发布于 2016-11-24 21:18:27

当尝试这样的事情时,会引发TypeError

代码语言:javascript
运行
复制
answer = 2 + '3'

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

代码语言:javascript
运行
复制
except ValueError:

你可以走了。

此外,您还将使用行将int转换回str

代码语言:javascript
运行
复制
answer = num_1 + str(num_2)

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

代码语言:javascript
运行
复制
answer = num_1 + num_2
票数 0
EN

Stack Overflow用户

发布于 2018-04-17 19:28:20

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

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

当然,这有点让人困惑,因为“当您试图将输入转换为int时,……”行。但它没有明确要求您执行此转换。它可能只是指在使用带有整数和字符串的+时发生的隐式转换。

要进一步了解Python,还可以测试如果这两个输入都是字符串会发生什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40794545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档