2017-02-04 2 views
-2

나는 파이썬을 배우려고 노력하고 있으며 지금까지 잘 진행되었다. 그러나 나는 내 코드를 실행하는 동안 무한 루프 오류가 계속 발생합니다. 아래 코드는 7 각을 가진 별의 코드입니다.파이썬에서 infinte 루프를 제거하는 방법

import turtle 
n = 7 
def drawStar(t, sz, s): 


    """Get turtle t to draw a star of sz sides, s size""" 

    for i in range(sz): 

     t.right(180)  
     t.forward(s) 
     t.right(180/n) 


wn = turtle.Screen() 
wn.bgcolor("lightgreen") 

alex = turtle.Turtle() 
alex.color("hotpink") 

# 
n = 7 
for i in range(15): 
    alex.up()  
    alex.forward(30) 
    alex.right(144) 
    alex.down() 
    print(n) 

    drawStar(alex,n,30) 


wn.exitonclick() 
+1

항상 넣어 FULL 오류 메시지 - 우리는 당신의 마음에서 읽을 수 없습니다 우리는이 오류 메시지가 표시하는 코드를 실행하는 것을 기대하지 않습니다. – furas

+1

이 코드는 오류없이 작동합니다. 15 개의 별 ('range (15)')을 뽑아서 멈 춥니 다. 이 코드 부분에서는 문제가 발생하지 않습니다. 어쩌면 다른 코드에서 문제가있을 수 있습니다. – furas

+0

이것은 무한 루프가 아닙니다. – Batman

답변

0

사람들은 대신 range(5)range(15)의 사용이 프로그램을 세 번 오래 걸릴 별을 다시 그려 지적했다. (무한 반복으로 잘못 입력했다는 것을 충분히 이해할 수 있습니다.)

프로그램의 성능을 향상시킬 수있는 다른 방법이 있습니다. 쉬운 밴드는 alex.speed("fastest")을 추가하여 거북이가 그림을 통해 경주하고 더 일찍 종료되도록합니다.

그러나 우리가 대신 alex.speed("slowest")을하면 우리는 그 프로그램의 다른 문제를 보게 될 것입니다. 거북이는 한 방향으로 돌아서 다른 방향으로 돌리는 데 너무 많은 시간을 소비합니다. 때때로 그것은 짧은 길 대신 원을 중심으로 먼 길을 돌 립니 다. 정상 속도에서

from turtle import Turtle, Screen 

N = 7 

def drawStar(turtle, sides, size): 

    """ Get turtle turtle to draw a star of sides sides of size size """ 

    turtle.right(18) 

    for _ in range(sides - 1): 
     turtle.forward(size) 
     turtle.right(6 * 180/sides) 

    turtle.forward(size) 

screen = Screen() 
screen.bgcolor("lightgreen") 

alex = Turtle() 
# alex.speed("fastest") 
alex.color("hotpink") 

for i in range(5): 
    alex.up()  
    alex.forward(30) 
    alex.down() 

    drawStar(alex, N, 30) 

    alex.left(8) 

alex.hideturtle() 

screen.exitonclick() 

을, 대신 15 만 5 반복은 턴이 최적화는 별을 그리는 데 걸리는 시간 떨어져 1/3를 노크 : 그럼이 문제를 해결하기 위해 코드를 재 작업하자! 그러나 동일한 결과를 생성합니다 질문에

enter image description here

관련 문제