python - 如何自动确定用户输入的类型?
问题描述
我想做一个简单的数学函数,它接受用户输入,但允许用户不输入整数/浮点数。我很快了解到 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)
解决方案
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'
>>>
推荐阅读
- swift - 更新的核心数据模型属性不可访问?
- javascript - 如何在 CKEditor5 中创建 Matcher 实例?
- windows - 使用 PowerShell 按日期过滤文件夹
- ios - 有人可以解释为什么我的 CollectionView 单元格只出现在这种情况下吗?
- javascript - 如何将 React 应用的生产 npm 构建部署到 Azure 应用服务
- android - 在 Android 中删除 ListiView 和 SQLite 行
- php - 如何获取通用布局文件的数据并显示在所有视图上
- excel - 使用 VBA 将附件插入到 XML 标记
- windows - Microsoft 低级、高速运行时数据捕获程序的名称是什么”
- macos - Applescript 如何更改桌面模式(填充屏幕、平铺、中心等)