gpt4 book ai didi

python - 无法将字符串转换为 float 12 + 13

转载 作者:太空宇宙 更新时间:2023-11-03 14:24:11 26 4
gpt4 key购买 nike

我正在尝试编写一个非常简单的代码,我将向它提供两个数字(使用输入函数),它会根据这些数字给我一个结果。当数字只是数字(例如,12或15)时,一切正常,但是当数字不是数字时,例如,加法(即6 + 6),那么我会收到一条错误消息“无法将字符串转换为 float :'6 + 6'。

请参阅下面的可重现示例:

def calc_sal(number1, number2):
return number1 * 4.5 + number2

number1 = float(input("Give number1 "))
number2 = float(input("Give number2 "))

print(calc_sal(number1, number2))

这是错误:

Give number1 6 + 6
Traceback (most recent call last):
File "SalaryCalc.py", line 4, in <module>
number1 = float(input("Give number1 "))
ValueError: could not convert string to float: '6 + 6'

在我看来,我无法通过input函数执行加法,而是认为它是一个字符串“6 + 6”。但是,当我在交互式 session 中逐行运行相同的代码时,一切正常(即,当输入为 6 + 6 时,输出为 12,而不是“6 + 6”)。那么你知道为什么只有当我通过终端运行程序而不是交互式地运行程序时才会发生这种情况吗?以及如何解决这个问题?

谢谢。

最佳答案

这取决于谁将使用此代码:

  • 如果只有你一个人,你可以使用eval函数:

    >>> eval('6+6')
    12
  • 如果您要让其他人输入数字,eval 是邪恶的。如果输入恶意代码,它可以格式化您的硬盘! (另请参阅How harmful is eval)

    考虑其他可能性,例如 ast.literal_eval (仅适用于 +-,甚至 * 也太难了对于它),pyparsing (强大的,但需要为此编写一个程序)等

您还可以考虑 numexpr 库(安装 numpy 作为要求并返回 numpy 数组作为结果):

>>> import numexpr as ne
>>> ne.evaluate('6**2')
array(36, dtype=int32)
>>> print(ne.evaluate('6**2'))
36

关于python - 无法将字符串转换为 float 12 + 13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47738835/

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