【问题标题】:Python: Turtle module won't run my code on Python 3.6Python:Turtle 模块不会在 Python 3.6 上运行我的代码
【发布时间】:2019-01-30 04:11:42
【问题描述】:

我正在做一些练习题,我编写代码以便乌龟可以绘制正方形、圆形、多边形等。问题是当我尝试运行我的代码时,乌龟是:

  1. 没有响应,我必须强制关闭它
  2. 只运行我绘制正方形的部分代码

我在 Spyder 上使用 Python 3.6,并尝试在每个部分的末尾使用 turtle.mainloop()turtle.done(),但我一直遇到同样的问题。

这是我的代码:

import turtle
bob = turtle.Turtle()
print(bob)

bob.fd(100)
bob.lt(90)
bob.fd(100)
bob.lt(90)
bob.fd(100)
bob.lt(90)
bob.fd(100)
turtle.done()


for i in range(4):
    print("Hello!")

for i in range(4):
    bob.fd(100)
    bob.lt(90)
turtle.done()

t = turtle.Turtle()
def square(t):
    print(t)
    t.fd(100)
    t.lt(90)
    t.fd(100)
    t.lt(90)
    t.fd(100)
    t.lt(90)
    t.fd(100)
    t.lt(90)
turtle.done()

square(bob)
turtle.done()

t = turtle.Turtle()
def square(t):
    print(t)
    for i in range(4):
        t.fd(100)
        t.lt(90)
turtle.mainloop()
turtle.done()


t = turtle.Turtle()
def square(t, length):
    print(t)
    for i in range(4):
        t.fd(length)
        t.lt(90)

square(t, 200)

turtle.done()


t = turtle.Turtle()
def polygon(t, length, n):
    print(t)
    for i in range(4):
        t.fd(length)
        t.lt(360/n)

polygon(t, t = 200, n = 12)
turtle.done()

import math

def circle(t, r):
    circumference = 2 * math.pi * r
    n = 100
    length = circumference / n
    polygon(t, length, n)

circle(t, 100)
turtle.done()
"""draws a circle in turtle"""

【问题讨论】:

  • 请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。将其缩减为刚好足以说明问题的代码:可能只有两个形状例程,每个都是一个简单的角度。包括一些print 命令来跟踪您的程序流程。
  • turtle.done() 必须是海龟图形程序中的最后一条语句。

标签: python turtle-graphics


【解决方案1】:

多个turtle.done() 语句,当应该只有一个时,并且各个代码段没有考虑其他代码段在哪里绘制的事实,使它看起来应该是一个集合单个文件中的单个程序:

方案一:

import turtle

bob = turtle.Turtle()
print(bob)

bob.fd(100)
bob.lt(90)
bob.fd(100)
bob.lt(90)
bob.fd(100)
bob.lt(90)
bob.fd(100)

for i in range(4):
    print("Hello!")

turtle.done()

方案二:

import turtle

bob = turtle.Turtle()

for i in range(4):
    bob.fd(100)
    bob.lt(90)

turtle.done()

方案 3:

import turtle

def square(t):
    print(t)
    t.fd(100)
    t.lt(90)
    t.fd(100)
    t.lt(90)
    t.fd(100)
    t.lt(90)
    t.fd(100)
    t.lt(90)

bob = turtle.Turtle()

square(bob)

turtle.done()

程序 4:

import turtle

def square(t):
    print(t)
    for i in range(4):
        t.fd(100)
        t.lt(90)

t = turtle.Turtle()

square(t)

turtle.mainloop()

程序 5:

import turtle

def square(t, length):
    print(t)
    for i in range(4):
        t.fd(length)
        t.lt(90)

t = turtle.Turtle()

square(t, 200)

turtle.done()

程序 6:

import turtle
import math

def polygon(t, length, n):
    print(t)
    for i in range(n):
        t.fd(length)
        t.lt(360 / n)

t = turtle.Turtle()
polygon(t, length=50, n=12)

def circle(t, r):
    """draws a circle in turtle"""
    circumference = 2 * math.pi * r
    n = 100
    length = circumference / n
    polygon(t, length, n)

circle(t, 100)

turtle.done()

尝试在单独的文件中将它们作为单独的程序运行,看看 turtle 是否更适合你。

【讨论】:

    【解决方案2】:

    你告诉计算机如何做事,但你从来没有真正告诉它做这些事情。运行circle(t) 等来执行此操作。

    您并没有始终如一地运行您想要的所有事情。仔细阅读您的代码并确保您始终在运行 mainloop 等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 2014-02-28
      相关资源
      最近更新 更多