我正在弄乱python 2.7中带有循环的turtle导入,我只是看到屏幕闪烁,程序退出了。
这是我的代码:

import turtle

colors = ["red", "orange", "yellow", "green", "blue", "purple"]
dColors = dict(enumerate(colors))


def circleOfShapes(aTurtle):
    edges = 3
    radius = 100
    for i in range(5):
        for k in range(360 / 5):
            aTurtle.color(dColors.get(i))
            aTurtle.circle(radius, None, edges)
            aTurtle.right(5)
        edges += 1
        radius -= 10


turt = turtle.Turtle()
turt.shape("arrow")

window = turtle.Screen()
window.bgcolor("white")
window.exitonclick()

circleOfShapes(turt)


这只是我想为我的孩子做一些有趣的事情,并使他对小时候的编程感兴趣,就像我希望的那样。谢谢您的帮助。

最佳答案

这是在Python 2和Python 3上均可运行的经过稍微修改的代码版本。

import turtle

colors = ["red", "orange", "yellow", "green", "blue", "purple"]
dColors = dict(enumerate(colors))

def circleOfShapes(aTurtle):
    edges = 3
    radius = 100
    for i in range(5):
        for k in range(360 // 5):
            aTurtle.color(dColors.get(i))
            aTurtle.circle(radius, None, edges)
            aTurtle.right(5)
        edges += 1
        radius -= 10

turt = turtle.Turtle()
turt.shape("arrow")
#turt.hideturtle()
#turt.speed(0)

window = turtle.Screen()
window.bgcolor("white")

circleOfShapes(turt)
window.exitonclick()


您可以通过取消注释#turt.hideturtle() #turt.speed(0)中的一个或两个来加快速度



我将内部range调用中的除法更改为360 // 5以确保其返回整数。这使得代码与Python 2和Python 3更加兼容。

在Python 2中,如果/除运算符的操作数均为int,则将返回int;在Python 3中,它将始终返回float。因此,当需要int商时,最好使用//底数除法运算符。

Python 2 range将接受float arg,但是会给出弃用警告。在Python 3中,它只会引发一个错误。

关于python - 我在弄乱python 2.7中的带有循环的 turtle 导入并且 turtle 不会移动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47106291/

10-16 19:04
查看更多