본문 바로가기
프로그램

[파이썬] 문제 : 터틀 400, 600, 1000 만큼 이동시 right 90 하기

by 오디세이99 2022. 12. 20.
728x90
반응형

(문제)

140~170사이에서 랜덤값을 while True를 통해 무한 추출하여

(-200,200)에서 시작하여 무한으로 forward 시킨 후

각각 400, 600, 1000만큼을 이동했을 때마다 right 90을 시켜주려 합니다.

이때 랜덤값이 400, 600, 1000에 정확하게 도달하지 않기 때문에

xcor 등으로는 right를 시켜줄 수가 없는데
정확하게 해당 값에서 right를 시켜주려면 어떻게 해야 할까요?

 

 

(방법)

import turtle as t
import random

t.shape('turtle')
t.speed(4)

t.up()
t.goto(-200,200)                      # -200, 200  으로 이동
t.down()

pos = [400, 600, 1000]                # 이동거리
pos_idx = 0                           # pos를 구분
n_sum = 0                             # 총 이동거리. 400, 600, 1000 확인 용
while True:                          # 무한 반복
    n = random.randint(140, 170)      # 140~170에서 임의의 값
    if n_sum + n < pos[pos_idx]:      # 총이동거리와 이번 이동거리의 합이 현제 목표 이동거리보다 작으면
        n_sum += n
        t.forward(n)                   # 이번 이동 거리만큼 이동
        print('sum=',n_sum, ' /n=',n)
    else:                              # 총이동거리와 이번 이동거리의 합이 현재 목표 이동거리보다 크면
        np = pos[pos_idx] - n_sum      # 목표이동거리 만큼만 더 이동거리 계산
        t.forward(np)                  
        print('sum=',np, ' / 90')
        t.right(90)                    # right
        n_sum = 0                      # 총이동거리 초기화
        pos_idx += 1                   # 다음 목표이동거리로 변경
    
    if n_sum > 1000 or pos_idx > len(pos)-1:    # 총 이동거리가 1000 이 넘거나 목표 인덱스가 벗어나면 종료
        break
    
t.done()

결과

sum= 152  /n= 152
sum= 307  /n= 155
sum= 93  / 90
sum= 247  /n= 154
sum= 410  /n= 163
sum= 577  /n= 167
sum= 23  / 90
sum= 177  /n= 154
sum= 340  /n= 163
sum= 508  /n= 168
sum= 661  /n= 153
sum= 813  /n= 152
sum= 976  /n= 163
sum= 24  / 90

728x90
반응형

댓글