이 코드 스 니펫은 중학교에서 가르치는 파이썬 과정에서 가져온 것입니다. 이 파일은 거북이를 가져온 다음 무작위로 가져 와서 사각형이 그려지는 동안 목록에서 색상을 선택할 수 있습니다. if 루프를 while 루프로 변경해보고 예상치 못한 결과가 발생했습니다. 루프는 num = 0 후에 계속되며 0을 무기한 인쇄합니다. sqspin (num-1) 호출 외의 감소분을 제거하고 위의 줄에서 감소를 수행했습니다. num = num -1 이 변경은 연속적인 각 루프에 대해 num의 인쇄 된 값을 임의로 변경하기 시작했습니다. 처음으로 0에 도달 한 후 나는 왜 num> 0이 num = 0 일 때 루프를 끝내지 않거나 num의 임의 값이 어디서 오는지 이해하지 못한다. 모든 단서? 3.4.3을 실행 중이지만 학교에서 2.7을 사용 중입니다.임의의 가져 오기가 while 루프의 사용에 영향을 줍니까?
from turtle import *
from random import *
shape("turtle")
st()
def sq():
fd(100)
rt(90)
fd(100)
rt(90)
fd(100)
rt(90)
fd(100)
rt(90)
colors = ['red', 'green', 'orange', 'blue', 'yellow']
def pickcolor():
return choice(colors)
def sqspin(num):
print(num)
if num > 0:
sq()
rt(5)
mycolor = pickcolor()
pencolor(mycolor)
sqspin(num-1)
sqspin(5)
왜 줄 번호를 추가 했습니까? –
'num'을 절대 변경하지 않기 때문에! 재귀 호출에서'num-1'을 전달하지만 호출자에서 num을 변경하지는 않습니다. –
'sq' 란 무엇입니까? 내가 놓친 게 있니? –