有关数据类型的判断

在一个小练习中,想要限制用户输入的是整数

整体内容如下

number = input("\n\t Enter a integer number, and I will tell you if it is even or odd: " + "\n\t ")
if not (type(number) is int):
    number = input("\n\t Please input a integer. " + "\n\t ")
number = int(number)

问题在于:不论输入的数字是浮点数整数if 命令都会执行

我认为是 if 语句不合理的地方,但又不知道要怎么修改。如果是的话,要怎么修改呢? 如果不是的话,又是哪里出了问题呢?

希望大家可以支支招!多谢!

Jason990420
最佳答案

input 返回的是字符串 str, 而非 intfloat, 所以 not (type(number) is int) 永远为 True

>>> number = input("\n\t Enter a integer number, will tell you even or odd: " + "\n\t ")

         Enter a integer number, will tell you even or odd:
         123
>>> type(number)
<class 'str'>
>>> number = input("\n\t Enter a integer number, will tell you even or odd: " + "\n\t ")

         Enter a integer number, will tell you even or odd:
         1.23
>>> type(number)
<class 'str'>
>>> type(number) is int
False
>>> type(number) is float
False
>>> type(number) is str
True
>>> not (type(number) is int)
True
4年前 评论
Jason990420 (作者) 4年前
nizuitianla (楼主) 4年前
nizuitianla (楼主) 4年前
讨论数量: 1
Jason990420

input 返回的是字符串 str, 而非 intfloat, 所以 not (type(number) is int) 永远为 True

>>> number = input("\n\t Enter a integer number, will tell you even or odd: " + "\n\t ")

         Enter a integer number, will tell you even or odd:
         123
>>> type(number)
<class 'str'>
>>> number = input("\n\t Enter a integer number, will tell you even or odd: " + "\n\t ")

         Enter a integer number, will tell you even or odd:
         1.23
>>> type(number)
<class 'str'>
>>> type(number) is int
False
>>> type(number) is float
False
>>> type(number) is str
True
>>> not (type(number) is int)
True
4年前 评论
Jason990420 (作者) 4年前
nizuitianla (楼主) 4年前
nizuitianla (楼主) 4年前