我正在为学校(python)做代码,代码一直出错

时间:2016-12-14 19:15:06

标签: python python-3.x python-3.5

我在学校的python中编写代码,我对python不是很先进,我的整个代码是一个乌龟绘制的棋盘游戏。我想 - 当一只乌龟到达最后一个空间时 - 制作一只乌龟(A)写,bname,“赢了!”其中bname是用户输入str变量。但是,这行代码:

A.write(bname,"HAS WON!!!", move=False, align="left", font=("Arial", 40, "normal"))

一直出错:

A.write(bname,"HAS WON!!!", move=False, align="left", font=("Arial", 40, "normal"))
TypeError: write() got multiple values for argument 'move'

任何人都知道如何解决这个问题,我不知道该怎么做! 顺便说一下,这是乌龟; - )

2 个答案:

答案 0 :(得分:2)

我猜测write是一个函数,其第一个参数是一个字符串,第二个参数是一个布尔值,表示文本是否应该移动等等。在这种情况下,它接受bname作为第一个参数,"HAS WON!!!"作为第二个参数。然后,它会发现您还提供了move=False并感到困惑,因为您已经说"HAS WON!!"是第二个参数move的值。

以下是发生相同错误的更简单示例:

>>> def f(a,b):
...     return a + b
...
>>> f(4, 8, b=15)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() got multiple values for argument 'b'

如果您希望bname "HAS WON!!!"成为第一个参数,请尝试连接它们:

A.write(bname + "HAS WON!!!", move=False, align="left", font=("Arial", 40, "normal"))

答案 1 :(得分:0)

我猜移动是第一个或第二个位置参数。一旦通过传递bname"HAS WON!!"进行设置,另一次通过传递关键字参数move=False进行设置。

关于位置和关键字参数的好例子可以在这里找到。 Positional argument v.s. keyword argument