【问题标题】:AttributeError: 'int' object has no attribute 'fd'AttributeError:“int”对象没有属性“fd”
【发布时间】:2016-03-20 22:47:44
【问题描述】:

我正在阅读 Python 教程,其中一个练习让我卡住了。练习的描述是:“阅读下面的函数,看看你能不能弄清楚它的作用。然后运行它。”所以我不能真正告诉你它在做什么,我仍在努力。

我自己只写了前两行,这是该教程的复制粘贴。代码如下:

import turtle

t = turtle.Turtle()
turtle.mainloop()

def draw(t, length, n):
    if n == 0:
        return
    angle = 50
    t.fd(length*n)
    t.lt(angle)
    draw(t, length, n-1)
    t.rt(2*angle)
    draw(t, length, n-1)
    t.lt(angle)
    t.bk(length*n)

draw(5, 10, 15)

提供追溯:

> Traceback (most recent call last):   File
> "D:\Directory\Python\Projects\Learning python\Exercises\Exercise
> 5.14.5.py", line 18, in <module>
>     draw(5, 10, 15)   File "D:\Directory\Python\Projects\Learning python\Exercises\Exercise 5.14.5.py", line 10, in draw
>     t.fd(length*n) AttributeError: 'int' object has no attribute 'fd'

【问题讨论】:

  • 传递给draw调用的第一个参数是一个整数-t。这个论点掩盖了你的全局变量t = turtle.Turtle()
  • @Rogalski 我认为您应该将其发布为答案

标签: python-3.x turtle-graphics attributeerror


【解决方案1】:

你得到这个错误的原因是因为第一个参数是5,所以变量t在函数中有值5。然后代码尝试调用5.fd(length*n)。调用draw时切换第一个参数为t:

draw(t, 10, 15)

【讨论】:

    猜你喜欢
    • 2020-05-31
    • 2021-11-30
    • 2020-03-26
    • 2013-04-15
    • 2021-01-18
    • 2019-05-30
    • 2021-02-24
    • 2021-08-01
    • 2015-07-06
    相关资源
    最近更新 更多