这些是问题。我成功完成了问题1,但我只是将其添加到上下文中。我在问题2中遇到了问题。
1. Write a function called square that takes a parameter named t, which is a turtle. It
should use the turtle to draw a square.
Write a function call that passes bob as an argument to square, and then run the
program again.
2. Add another parameter, named length, to square. Modify the body so length of the
sides is length, and then modify the function call to provide a second argument. Run
the program again. Test your program with a range of values for length.
这是我的工作:
import turtle
bob = turtle.Turtle()
print(bob)
def square(t, length):
for i in range(4):
bob.fd(t, length)
bob.lt(t)
square(bob, 200)
turtle.mainloop()
以下是追溯:
Traceback (most recent call last):
File "/Users/ivan/Documents/Python/thinkpython/square.py", line 10, in <module>
square(bob, 200)
File "/Users/ivan/Documents/Python/thinkpython/square.py", line 7, in square
bob.fd(t, length)
TypeError: forward() takes 2 positional arguments but 3 were given
我在回溯中不理解的部分是我只看到给bob.fd()的两个参数,但它说它收到了三个。有人可以解释这种情况吗?
答案 0 :(得分:1)
因为bob
是Turtle
类的实例化而fd
是类函数,所以在调用函数时会传递一个隐式self
。如果您要查看fd
课程中Turtle
的定义,您会看到def fd(self, distance)
之类的内容。在调用类函数bob.fd(t, length)
时,self
参数将隐式传递该类的实例化,然后您传递另外两个参数(t,length)
,总共3个参数。< / p>
答案 1 :(得分:0)
forward function Yehuda Katz
只接受一个参数fd
turtle.fd(distance)参数:
距离 - 数字(整数或浮点数) 将乌龟向前移动指定的距离,朝向海龟的方向。
distance
并使用其中的一个参数调用bob
,例如fd
t.fd(length)
,如果你想让乌龟转90度。你的问题要求你传递一只乌龟作为参数t.lt(90)
。那是你的乌龟实例。这就是为什么我们不是致电t
和bob.fd()
而是致电bob.lt
和t.fd()
。
t.lt()
上面的代码应该让海龟import turtle
bob = turtle.Turtle()
print(bob)
def square(t, length):
for i in range(4):
t.fd(length)
t.lt(90)
square(bob, 200)
turtle.mainloop()
画一个200乘200的正方形。
希望这可以帮助。如果您仍然不明白发表评论,我会更详细地解释。