1
import numpy as np
import matplotlib.pyplot as plt
print("FUNCTION GRAPHER")
def graph(formula,domain):
    x = np.array(domain)
    y = eval(formula)
plt.plot(x, y)
plt.show()
formula=input("Function: ")
domainmin=float(input("Min X Value: "))
domainmax=float(input("Max X Value: "))
graph(formula, range(domainmin,domainmax))

这是我创建grapher的代码。如您所见,用户可以输入函数和域。我正在使用一个简单的 y=x 函数对其进行测试,这就是我得到的错误。我猜这与我如何设置输入有关。

FUNCTION GRAPHER
Function: x
Min X Value: -1
Max X Value: 10
Traceback (most recent call last):
  File "/Users/William/Documents/Science/PYTHON/Grapher.py", line 12, in <module>
    graph(formula, range(domainmin,domainmax))
TypeError: 'float' object cannot be interpreted as an integer

发生错误后,我输入以下内容:

graph('x', range(-1,10))

并且图表弹出。我正在使用 Python 3.4。

4

1 回答 1

2

文档中:

范围构造函数的参数必须是整数

因此,要range在这种情况下使用,您需要将代码更改为:

domainmin=int(input("Min X Value: "))
domainmax=int(input("Max X Value: "))

或者,也许更接近您的意图,您可以使用numpy.arangeor numpy.linspace,因此您可以使用float范围 - 您必须另外添加造粒参数 ( stepfor arange) 或步骤数 ( numfor linspace)。

于 2014-01-01T20:01:50.030 回答