使用输入函数对数字是整数还是浮点数进行分类。我究竟做错了什么?

时间:2018-12-31 15:15:42

标签: python input integer

伙计们,我是编程界的新手,我正全力学习Python。

我现在正被这个问题困扰:

“制定一种算法来验证某个值是否为整数。”

现在的问题是INPUT函数以字符串形式返回类型。如果我将变量强制转换为FLOAT,它将阻止我读取整数。

我该怎么办?

val1 = float(input("enter value")
if type (val1)== int:
print("value is integer")
else:
print("value is NOT integer")

5 个答案:

答案 0 :(得分:2)

您可以尝试将输入的字符串隐藏为整数或浮点数:

k = input("enter value:")
try:
    k = int(k)
    # it is an integer
except ValueError:
    try:
        k = float(k)
    except ValueError:
        print("Neither int nor float")
    else:
        print(k, "is a float")
else:
    print(k, "is an integer")

输出:

enter value:44.4
44.4 is a float

enter value:hallo 
Neither int nor float

enter value:44
44 is an integer

Doku:

答案 1 :(得分:1)

您可以为此使用tryexcept(可以看看Errors and Exceptions。尝试将input变成int,然后根据结果​​编写相应的打印语句:

val1 = input("enter value")
try:
    int(val1)
    print("value is integer")
except:
    print("value is NOT integer")

答案 2 :(得分:1)

如果您还希望将'3.0'之类的输入识别为整数(因此所有整数,而不是int类型的所有值),仅对其调用int ,因为int无法解析该字符串。

确定值是否为整数的另一种方法是查看是否除以一个余数,因此可以使用取模运算符%

val1 = float(input("enter value"))
if val1 % 1 == 0:
    print("value is integer")
else:
    print("value is NOT integer")

答案 3 :(得分:0)

如果您不希望转换和错误处理。您可以使用ast.literal_eval将字符串转换为Python附带的isinstance来解决您的问题。

from ast import literal_eval


in_val = input('Enter value: ')

# get literal value

l_val = literal_eval(in_val)

# check if it is int
if isinstance(l_val,int):
    print('It is integer')
elif isinstance(l_val,float):
    print('It is a float')
elif isinstance(l_val,str):
    print('It is a string')

else:
    print('Not int,float or string')# could be list, dict etc ;)

答案 4 :(得分:-1)

if val1.count('.') == 0:
   print("value is NOT integer")
else:
   print("value is integer")