在Zelle的《编程Python》一书中,第6章的第17个问题要求一个函数,该函数接受两个参数:“shape”和“newCenter”,然后根据鼠标单击提供的新点移动或重新绘制现有对象。在
我已经知道了,如果再给函数添加两个参数“myX”和“myY”,那么我就可以减去move方法的差值了。我无法理解的是,如何仅使用上面指定的两个参数来执行相同的计算。这是我的代码:
def moveTo(shape, newCenter, myX, myY):
myShape = shape
myNewX = newCenter.getX()
myNewY = newCenter.getY()
myXUpd = myNewX - myX
myYUpd = myNewY - myY
myShape.move(myXUpd, myYUpd)
return myNewX, myNewY
def main():
win = GraphWin("My Graph Win", 500, 500)
win.setBackground("white")
win.setCoords(0, 0, 10, 10)
Text(Point(5, 8.5), "Please click 10 times.").draw(win)
myPoint = win.getMouse()
myX = myPoint.getX()
myY = myPoint.getY()
myCircle = Circle(myPoint, 2)
myCircle.draw(win)
for x in range(1, 10):
myNewPoint = win.getMouse()
myX, myY = moveTo(myCircle, myNewPoint, myX, myY)
win.close()
另外,由于我是一个相当新的Python开发人员,所以任何关于简化、样式或结构的一般性提示都是值得赞赏的。在
谢谢!在
我自己解决了这个问题,所以读过Zelle“Python编程”一书的人都可以从我的经验中学习。我只是把X和Y从我传递进来的形状对象中拉出来,这样就省去了自己再次单独传递它们的麻烦。下面是一些删减了部分内容的更新代码。在
相关问题 更多 >
编程相关推荐