Python:TypeError:can';t将序列乘以类型为'的非整数;浮动';使用浮点参数时

Python:TypeError:can';t将序列乘以类型为'的非整数;浮动';使用浮点参数时,python,calculus,Python,Calculus,我正在编写一个程序来计算左手、右手和中点(其他地方我都拼错了)。我决定使用python(我有一些使用它的经验)来编写脚本,并最终建立一个数学工具库,使用bash别名和脚本可以快速执行。但是,我的脚本遇到了问题。因为我需要计算一个函数,所以我使用了。编写脚本后,我尝试使用以下命令执行脚本: python -c "from reimann import reimann; print(reimann(1.0,2.718281828459045,10,'1/x','midpoint'))" pytho

我正在编写一个程序来计算左手、右手和中点(其他地方我都拼错了)。我决定使用python(我有一些使用它的经验)来编写脚本,并最终建立一个数学工具库,使用bash别名和脚本可以快速执行。但是,我的脚本遇到了问题。因为我需要计算一个函数,所以我使用了。编写脚本后,我尝试使用以下命令执行脚本:

python -c "from reimann import reimann; print(reimann(1.0,2.718281828459045,10,'1/x','midpoint'))"
python -c "from reimann import reimann; print(reimann(float(1.0),float(2.718281828459045),10.0,'1/x','midpoint'))"
这应该返回大约1,当从脚本运行时会返回,但当按上面所示运行时,我会得到以下错误:

Traceback (most recent call last):
File "<string>", line 1, in <module>
File "reimann.py", line 3, in reimann
delta_x = ((float(interval_b) - float(interval_a))/float(num_intervals * 1.0))
TypeError: can't multiply sequence by non-int of type 'float'
非常感谢您的帮助!下面是我的代码:

from simpleeval import simple_eval
def reimann (equation, interval_a, interval_b, num_intervals, type_sum):
    delta_x = ((float(interval_b) - float(interval_a))/float(num_intervals * 1.0))
    ans = 0;
    if type_sum == "left":
            x = interval_a
            while x < (interval_b - delta_x):
                    ans += simple_eval(equation, names={"x": x})
                    x += delta_x
    else:
            if type_sum == "right":
                    x = interval_a + delta_x
                    while x < interval_b:
                            ans += simple_eval(equation, names={"x": x})
                            x += delta_x
            else:
                    if type_sum == "midpoint":
                            x = interval_a 
                            while x < (interval_b - delta_x):
                                    ans += simple_eval(equation, names={"x": x})
                                    x += delta_x

                            x = interval_a + delta_x
                            while x < interval_b:
                                    ans += simple_eval(equation, names={"x": x})
                                    x += delta_x
                            ans /= 2
    ans *= delta_x
    return ans

#print(reimann("1/x", 1, 2.718281828459045, 10000, "midpoint") This works correctly
从simpleeval导入simple\u eval
def reimann(方程式、区间a、区间b、数值区间、类型总和):
delta_x=((浮点(间隔_b)-浮点(间隔_a))/float(num_间隔*1.0))
ans=0;
如果类型_sum==“left”:
x=间隔时间
当x<(间隔b-增量x):
ans+=simple_eval(方程式,名称={“x”:x})
x+=δx
其他:
如果类型_sum==“右”:
x=间隔时间a+增量时间x
当x

注意:我把参数放错了,很抱歉浪费了大家的时间。谢谢你的帮助。

在reimann import-reimann的行
python-c;print(reimann(float(1.0)、float(2.718281828459045)、10.0、'1/x'、'middpoint')”
中,你将字符串('1/x')作为num\u间隔传递


如果我正确理解您的代码,它应该是reimann import reimann;print(reimann('1/x',float(1.0),float(2.718281828459045),10.0,'middoint'))中的
python-c“

是您的
num\u interval
列表、字符串或元组?num\u interval是整数。显然不是。请包括
类型的输出(num\u interval)
。我怀疑它是一个类似于字符串的整数。您希望
'1/x'
做什么?您试图将该字符串与浮点相乘,但这不起作用(但与整数相乘会重复该字符串)。打印(键入(num\u interval))是的。你完全正确。我很抱歉把大家的时间浪费在我的近视上。不过非常感谢你的帮助。