【问题标题】:i am doing a code for school (python), and the code keeps erroring我正在为学校(python)编写代码,并且代码不断出错
【发布时间】:2016-12-15 03:28:18
【问题描述】:

我正在为学校编写 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'

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

【问题讨论】:

  • A.write() 是什么?它是某个类中的方法吗?你需要出示你的代码!
  • A 是乌龟的名字,它应该写成 bname,"HAS WON!"
  • bname 是一个变量
  • 它是一个 800 ish 行代码...
  • 请考虑编辑您的帖子,提供有关代码的更多信息...

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


【解决方案1】:

我猜write 是一个函数,它的第一个参数是一个字符串,第二个参数是一个布尔值,指示文本是否应该移动,等等。在这种情况下,它接受bname 作为第一个参数和@ 987654323@ 作为第二个参数。然后它看到您还提供了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"))

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      相关资源
      最近更新 更多