python - 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) 工作正常)
是否有这样的事情,以便我可以使用类似的方法来区分十进制数输入和整数?
解决方案
您的问题中有两个问题。
- 要处理字符串 > 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
- 要检查类型,您正在寻找
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
推荐阅读
- bash - 使用带有 sed 的变量替换 xml 中的值
- perl - 如何将会话从一个页面传递到另一个页面?
- azure - Spark 从 ADLS gen1 读取文件
- unity3d - Unity 创建新场景具有黄色默认材质和相对变换,表现非常奇怪
- sql - 将 SQL Server 存储过程转换为查询
- html - 当标准阴影没有时,为什么盒子阴影会在过渡时闪烁?
- c++ - 串行连接打开所有端口?
- javascript - 如何使用 JS创建 Bulma 按钮元素而不是 HTML
- python - 无法使用 python 请求模块读取多个 set-cookie 数据
- javascript - 再次要求用户访问地理位置