【发布时间】:2022-12-04 10:51:35
【问题描述】:
user_input = int(input('Enter input: '))
if type(user_input) == "<class 'int'>":
print('This is a integer.')
上面的代码没有向控制台输出任何内容。我只是感到困惑,因为它非常简单并且看起来应该可以工作。
我试过删除输入行中不输出任何内容的 int() ,我理解这一点,因为 user_input 变成了一个字符串,但我不明白为什么当 user_input 被定义为整数时它不输出任何内容。
【问题讨论】:
-
使用
isinstance(user_input,int)。不要将类型与字符串表示混淆。在这种特殊情况下,类型检查毫无意义。如果上面的行没有抛出错误,那么user_input当然是一个 int。一个更好的方法来做你似乎想做的事情是在试图将字符串转换为 int 的行周围使用try ... except块。 -
因为没有类型可以等于任何字符串,出于同样的原因,没有整数可以等于任何字符串。类型本身有自己的类型。
-
(有些人会建议依赖 try-except 是不好的,你应该使用像
isdigit这样的字符串方法。那些人错了 - 这些方法检查字符属性,而不是字符串是否可以解析为 int。你会失败在像-3这样的输入上,因为-不是数字。与让int处理它相比,尝试手动正确地检查是不必要的容易出错的情况,如果你尝试,情况会变得更糟解析浮点数而不是整数。)
标签: python if-statement input types conditional-statements