Черепаха не запустится - ядро ​​занято - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь нарисовать фиксированное количество серий вертикальных полос со случайной шириной и цветами. К сожалению, ядро ​​остается занятым, и черепаха ничего не тянет.

Я использую Anaconda - Jupyter Я понимаю, что я довольно расплывчато, но я действительно не знаю, как с этим справиться. Очень ценю тех, кто находит время, чтобы помочь!

import turtle
from turtle import *
import random

window = turtle.Screen()
window.colormode(255)
window.bgcolor("black")
turtle = turtle.Turtle()
turtle.speed(10)
turtle.penup()
turtle.shape("turtle")
turtle.goto(0,0)
#turtle.mode("standard")

def drawstripes(rgb, length, width):
    turtle.color(rgb)
    turtle.begin_fill()
    turtle.forward(length)
    turtle.left(90)
    turtle.forward(width)
    turtle.left(90)
    turtle.forward(length)
    turtle.end_fill()

n = 20
length = 100
totalwidth = 40
widths = [random.uniform(0, totalwidth) for i in range(0, n)]
widths.sort()

turtle.goto(0,length)
turtle.setheading(270)

while turtle.xcor() <= totalwidth :  
    for width in widths :
        r = random.randint(0, 255)
        g = random.randint(0, 255)
        b = random.randint(0, 255)
        rgb = (r, g, b)
        drawstripes(rgb, length, width)

Как объяснено, ожидаемый результат представляет собой серию смежных вертикальных полос различной ширины и цвета от x = 0 до x = 40px

1 Ответ

1 голос
/ 30 июня 2019

Ниже доработка вашего кода для корректной работы на консоли Python, посмотрите, будет ли он лучше для вас в Anaconda - Jupyter:

from turtle import Screen, Turtle
from random import randint, uniform

n = 20
length = 100
totalwidth = 80

def drawstripe(rgb, length, width):
    turtle.color(rgb)
    turtle.begin_fill()
    turtle.forward(length)
    turtle.left(90)
    turtle.forward(width)
    turtle.left(90)
    turtle.forward(length)
    turtle.left(180)
    turtle.end_fill()

window = Screen()
window.colormode(255)
window.bgcolor("black")

turtle = Turtle()
turtle.shape('turtle')
turtle.speed('fastest')
turtle.penup()

widths = [uniform(0, totalwidth) for i in range(0, n)]
widths.sort()

turtle.sety(length)
turtle.setheading(270)

for width in widths:
    r = randint(0, 255)
    g = randint(0, 255)
    b = randint(0, 255)
    rgb = (r, g, b)
    drawstripe(rgb, length, width)

    if turtle.xcor() > totalwidth:
        break

turtle.hideturtle()
window.mainloop()

Конкретные изменения: добавлено mainloop() вызов в конце; добавлен последний поворот в drawstripe(), чтобы черепаха двигалась вперед, а не назад; извлек внутренний цикл, так как было неясно, чего пытался достичь внешний цикл, - добавил функциональность внешнего как условного; удвоить totalwidth, чтобы сделать вывод более очевидным.

enter image description here

...