2 回答

TA贡献1784条经验 获得超7个赞
首先,您将输入转换为 ,因此要精确(如果我们在无理数之类的术语中徘徊,这很重要),那么我们必须强调在这里谈论无理数近似的假设。float
完成后,您可以通过以下几种方式探索解决方案:
第一种方法是定义一个命名空间,您可以在其中将字符串名称映射到数字等效项 - 一个简单的字典就可以做到这一点,例如:
numbers_as_words = { "e",2.718281828459045 "pi",3.141592653589793 "phi",1.618033988749895 "sqr2",1.4142135623730951 "feet_to_meters",0.3048 "lbs_to_kg",0.453592 "miles_to_kilometers",1.60934 "gallons_to_litres",3.78541 }
我也用一些非无理占位符填充了它,以防你想嵌入一些简单的转换类型逻辑。
然后,您需要将输入作为字符串,对字符串执行简单的替换函数以解析任何匹配的字符串,以及 viola
您有一个混合的数字/字符串输入法。
def replace_names_and_return_float(user_input, mapping):
for k,v in mapping.items():
user_input = user_input.replace(k,str(v))
return float(user_input)
Irrational_Number = replace_names_and_return_float(input("ENTER a Irrational Number : "), numbers_as_words )
然后,由您来维护该字典以包含您要识别的所有替换。这可能会变得乏味,但它应该足以让你开始。numbers_as_words
如果你找到一些官方的无理数近似列表,你也许可以下载它,并构建一个映射作为一个自动化过程,但我刚才还没有谷歌搜索。numbers_as_words

TA贡献1893条经验 获得超10个赞
请找到下面的代码片段:
import re
g = input("Enter your irrational number : ")
if g=='pi':
g=math.pi
elif "root" in g:
root=float(re.search('[0-9]+', g).group())
number=float(re.search('(\d+)(?!.*\d)', g).group())
g=number**(1/float(root))
print(g)
使用此功能的好处是:
未插入手动值
您可以为数学库中存在的每个符号构建它
也可以扩展到其他操作
添加回答
举报