首页 > 解决方案 > 如何自动确定用户输入的类型?

问题描述

我想做一个简单的数学函数,它接受用户输入,但允许用户不输入整数/浮点数。我很快了解到 Python 默认不识别类型。快速谷歌搜索显示 using literal_eval,但ValueError: malformed string如果输入的是字符串,它会返回 with 。这是我到目前为止所拥有的:

from ast import literal_eval

def distance_from_zero(x):
  if type(x) == int or type(x) == float:
    return abs(x)
  else:
    return "Not possible"

x = literal_eval(raw_input("Please try to enter a number "))

print distance_from_zero(x)

标签: pythonpython-2.x

解决方案


ValueError: malformed string如果您阅读了 literal_eval 文档,只需回答您的查询为什么会发生:

安全地评估表达式节点或包含 Python 表达式的字符串。提供的字符串或节点只能由以下 Python 文字结构组成:字符串、数字、元组、列表、字典、布尔值和无。

所以字符串应该用“”括起来,就像在编辑器中写的那样,s = "string" raw_input接受输入并转换为字符串数据类型,所以我已经尝试过这个并且能够使用转换literal_eval

>>> x=raw_input()
string
>>> x= "\""+x+"\"" # concatenating the "" to string
>>> literal_eval(x)
'string'
>>>

推荐阅读