我正在编写一个创建图形窗口的函数,从用户那里获取点并在窗口中绘制一条带有这些点的线。这是我的代码:
def setUp():
w = GraphWin("Demo",500,500)
return w
def userInput():
x1, y1, x2, y2 = (eval(input("Enter 4 numbers: ")))
return x1, y1, x2, y2
def displayLine(w,x1,y1,x2,y2):
var = Line (point(x1, y1), Point(x2, y2))
var.draw(w)
def main():
w = setUp()
userInput()
displayLine(w,x1,y1,x2,y2)
main()
我得到的错误是global name 'x1' is not defined
。 x1
变量在userInput()
函数中定义。
答案 0 :(得分:2)
由于您在userInput()
中返回了4个值,因此您还希望在想要使用它之前将它们展开到相同的范围内,因此请尝试使用main()
def main():
w = setUp()
x1, y1, x2, y2 = userInput()
displayLine(w,x1,y1,x2,y2)
main()
请注意,您的输入法(eval)肯定是不安全的,因为您正在执行任意用户输入,并且用户必须使用逗号来明确区分他们的号码,而这些逗号并不会被告知。
答案 1 :(得分:0)
错误来自main
方法。 main
方法中没有声明x1,y1,x2或y2。你应该做的
x1,y1,x2,y2 = userInput()
,因为userInput()
会返回这4个值,而您不会在main
方法中接受它。