gpt4 book ai didi

python - 如何将字符串转换为 float (不添加行)

转载 作者:太空宇宙 更新时间:2023-11-04 07:18:44 25 4
gpt4 key购买 nike

我正在尝试用尽可能少的行编写 Python 计算器,到目前为止(理论上)我已经将它减少到 10。唯一的问题是我似乎无法弄清楚如何将两个字符串更改为 float , 无需添加更多行。

x = raw_input("Enter calc instructions.  ")
a, b, c = x.split()
if b == "-":
print (a-c)
elif b == "+":
print (a+c)
elif b == "*":
print (a*c)
elif b == "/":
print (a/b)

我知道我必须在某个地方执行float(),只是我还没找到位置。

编辑:*我试图尽可能地降低它的挑战,在这种情况下,我不在乎它是否凌乱。我也知道不要让您的代码过于“重叠”和混淆。

最佳答案

如果你想要简短,那么下面就是简短的(尽管你可以将第 2 行和第 3 行合并在一起)。但是,它不是可读的。

from operator import add, sub, truediv, mul
ops = {"+": add, "-": sub, "/": truediv, "*": mul}
x, op, y = [float(string) if i % 2 == 0 else string for i, string in enumerate(raw_input("Enter calc instructions. ").split())]
print(ops[op](x, y))

从所有这一切中得出的教训是,虽然简洁是好的——较短的代码通常更快、更容易阅读——但如果代码过于复杂,则无法达到简洁的目的。

对于虐待狂(以上作为一个衬垫):

(lambda x, op, y, operator=__import__("operator"), opnames={"+": "add", "-": "sub", "/": "truediv", "*": "mul"}: getattr(operator, opnames[op])(x, y))(*[float(s) if i % 2 == 0 else s for i, s in enumerate(raw_input("Enter calc instructions.  ").split())])

对于知道如何使用的人 ast.literal_eval:

__import__("ast").literal_eval(raw_input("Enter calc instructions.\n"))

对于那些不介意他们的计算器存在安全漏洞的人...

input("Enter calc instructions.\n")

关于python - 如何将字符串转换为 float (不添加行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29082423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com