【问题标题】:Python Turtle Graphics and LoopsPython Turtle 图形和循环
【发布时间】:2017-11-09 04:47:23
【问题描述】:

我正在尝试创建一个循环,水平打印出 6 条平行线。但是,当我使用下面的代码时,我只能看到一条连续移动的线。任何提示将不胜感激。这是代码:

count = 0;
while(count < 6):
  actor.penup()
  actor.backward(100)
  actor.pendown()
  actor.forward(150)
  count = count + 1

【问题讨论】:

  • 如果你只有前后移动,你怎么可能得到平行线?您需要在循环中进行横向移动。
  • 看看你写的代码 - 拿起笔,向后走 100,然后放下笔,向前走 150。这给你一个 150 长度的线。然后返回 100,即 2/3rds 到你刚刚画的线,再画 150 线,所以你现在有一条 200 长的线。在第一行之后,您只需在每次迭代时将 50 添加到同一行。
  • 另外,像这样循环的pythonic方法是for _ in range(6):,而不是使用while循环。

标签: python loops turtle-graphics


【解决方案1】:

您可以利用您对笛卡尔坐标的熟悉程度。将笔移动到每一行的一端,然后将笔向下移动到该行的另一端。

>>> from turtle import *
>>> for _ in range(6):
...     up()
...     goto(0, 10*_)
...     down()
...     goto(50, 10*_)
...     
>>> up()
>>> home()

肯定有其他方法,但我对turtle一点也不熟悉。

【讨论】:

    【解决方案2】:

    肯定有其他方法,但我对乌龟一点也不熟悉。 - @比尔贝尔

    是的,有,我们可以制作一个线形的曲奇刀并它们:

    import turtle
    
    STAMP_SIZE = 20
    
    actor = turtle.Turtle('square', visible=False)
    actor.shapesize(0.5 / STAMP_SIZE, 200 / STAMP_SIZE, 0)
    actor.penup()
    
    for y in range(-3, 3):
        actor.sety(10 * y)
        actor.stamp()
    
    turtle.exitonclick()
    

    (如果你的系统上没有出现这些行,把上面的0.5改成1.0)

    这种方式只使用了turtle的.circle()方法来绘制平行线:

    import tkinter as tk
    import turtle
    
    WIDTH = 300
    
    root = tk.Tk()  # extra work up front to make canvas smaller than window
    root.title('Python Turtle Graphics')
    root.geometry('{}x{}'.format(WIDTH, WIDTH * 2))
    
    canvas = tk.Canvas(root, width=5 * WIDTH / 6, height=WIDTH * 2)
    canvas.pack()
    screen = turtle.TurtleScreen(canvas)
    
    actor = turtle.RawTurtle(screen, shape='turtle')
    actor.penup()
    actor.right(45)
    actor.goto(-WIDTH / 2, -5 * WIDTH / 6)
    actor.pendown()
    
    for y in range(3):
        actor.circle(WIDTH / 2**0.5, steps=4)
        actor.sety(actor.ycor() + WIDTH / 3)
    
    root.mainloop()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-14
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多