首页 > 解决方案 > Python:如何区分输入是整数还是浮点数

问题描述

我是一名尝试学习 Python 的初学者,并决定尝试一个练习,我将输入并区分其类型;无论是整数、浮点数还是字符串。

据我了解,Python 将所有输入视为字符串,因此即使我输入数字/小数点,输入也被视为字符串。我已经克服了区分输入是字符串还是其他方式的第一步:

def get():
    prompt = 'Give a number or a word.\n'
    x = input(prompt)
    try:
        float(x)
        print('You entered a number.')

    except:
        print('You entered a string.')

我利用了“try”和“except”,因为如果 x 是字符串而不是数字/浮点,float(x) 将返回错误。接下来,我推断我可以使用类似的方法来区分整数和浮点数,但我不知道什么会导致整数出错而浮点数不会出错,反之亦然。 (因为 x 是整数的 float(x) 工作正常)

是否有这样的事情,以便我可以使用类似的方法来区分十进制数输入和整数?

标签: python

解决方案


您的问题中有两个问题。

  1. 要处理字符串 > int/float,您可以ast.literal_eval先利用:
>>> import ast
>>> print(type(ast.literal_eval("2"))
int
>>> print(type(ast.literal_eval("3.4"))
float
>>> print(ast.literal_eval("3e2"))
300.0
  1. 要检查类型,您正在寻找isinstance我认为。
>>> x = 2
>>> print(isinstance(x, int))
True
>>> y = 3.4
>>> print(isinstance(y, int))
False
>>> print(isinstance(y, float))
True

因此,将这两者放在一起,您可以使用如下if语句:

if isinstance(ast.literal_eval(x), int):
    # do whatever you want if it's an int
elif isinstance(ast.literal_eval(x), float):
    # do whatever you want if it's a float

推荐阅读