【问题标题】:How to fix this turtle function?如何修复这个乌龟功能?
【发布时间】:2014-12-14 13:19:07
【问题描述】:

我遇到了这个问题的错误。我需要编写一个名为 droplets 的函数 画出一系列的水滴。参数是turtle绘制水滴的t,大小(每个水滴的直径)和间距(这是一个列表,用于每个水滴之间的距离)。我使用 Python 版本 3.4.2。我得到的错误是 TypeError。代码如下:

def droplets(t, size, separations):
    for i in range(len(separations)):
        t.down()
        t.circle(size)
        t.up()
        t.forward([separations * i])

import turtle
turt = turtle.Turtle()
droplets(turt, 5, [20, 25, 30])

错误:

Traceback (most recent call last):
  File "C:/Python34/My Python Program/Midterm 2 PP Test.py", line 10, in <module>
    droplets(turt, 5, [20, 25, 30])
  File "C:/Python34/My Python Program/Midterm 2 PP Test.py", line 6, in droplets
    t.forward([separations * i])
  File "C:\Python34\lib\turtle.py", line 1636, in forward
    self._go(distance)
  File "C:\Python34\lib\turtle.py", line 1603, in _go
    ende = self._position + self._orient * distance
  File "C:\Python34\lib\turtle.py", line 257, in __mul__
    return Vec2D(self[0]*other, self[1]*other)
TypeError: can't multiply sequence by non-int of type 'float'

【问题讨论】:

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


    【解决方案1】:

    如果你想遍历separations

    def droplets(t, size, separations):
        for i in range(len(separations)):
            t.down()
            t.circle(size)
            t.up()
            t.forward(separations[i])
    

    或者,更简单地说,只是迭代 separations 而不是使用索引:

    def droplets(t, size, separations):
        for separation in separations:
            t.down()
            t.circle(size)
            t.up()
            t.forward(separation)
    

    【讨论】:

      猜你喜欢
      • 2017-09-27
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 2017-08-09
      • 2021-03-31
      相关资源
      最近更新 更多