我在学校的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'
任何人都知道如何解决这个问题,我不知道该怎么做! 顺便说一下,这是乌龟; - )
答案 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