创建一个方法plot(window, expression, color = "black")
来绘制表达式
窗口。
这就是我所做的:
from math import *
from graphics import *
win = GraphWin()
def plot(window, expression, color = "black"):
#Evaluates given expression and plots it in "window". Returns the list of all the plotted points.
points = []
#Evalute expression over 1000 different values and for each (x,y) pair plot the point.
for i in range(0, 1001):
try:
x = i/100.0
y = eval(expression)
plot(x,y)
except Exception:
print("For ", x, " the expression is invalid")
return points
所以我想我做错了什么。有人能帮我吗? :)
答案 0 :(得分:0)
查看你的代码,你有一个名为plot的函数调用plot - 这是因为某个地方导入*的经典错误。
我怀疑你是在试图在plot中调用graphics.plot所以摆脱from graphics import *并放置图形。在你从那里使用的物品之前。
您也没有填写或使用积分榜。
答案 1 :(得分:0)
有几个明显的问题:
points
列表,从未放入任何内容,然后return
它(仍然为空);和x, y
,您再次递归地呼叫plot
(请参阅Steve Barnes的回答),将x
作为window
传递给y
作为{{{} 1}}。我建议你把它分成两部分:一部分用于根据函数创建一个点列表,另一部分用于绘制这个点列表。
答案 2 :(得分:0)
不要使用名称plot
作为您自己的函数名称,如果您有matplotlib.pyplot.plot
,这将隐藏import *
方法名称。
matplotlib plot
方法用于创建行,每次调用时都需要 一系列 X和Y.例如,plot(1,2)
或plot([1], [2])
将在图中绘制 nothing ,而plot([1,2], [3,4])
在点(1,3)和(2,4)之间绘制一条线。如果您坚持每次都绘制一个点,则需要致电scatter(1, 2)
。