광주인력개발원

다시 돌아온 별찍기 파이썬 버전 [2023-04-20]

플광 2023. 5. 29. 10:25

 

파이썬의 반복문은 C와 다르다. while문 for x in (iterable_type) 문이 있기 때문에, "C나 JAVA의 for문과 비슷하겠지?" 생각하면 많이 당황스럽다. 일단 index가 다른 라인에서 선언되고, 안까먹고 값의 변동을 다른 라인에 명령해야한다. 그래서 아무래도 index 지표로 조건 검증하기보단, True나 False 인자를 기준으로 활용하는 것이 좋을 것 같다. 또한, 우리가 알던 for문이 없어지더라도, 이후에 배울 파이썬의 for문은 이런 불편함을 상쇄하고도 남을 장점이 많으니,, 익숙해지도록 노력해야한다.

 

"""

4/20 퀴즈

2~ 9단 까지

"""

out_row = 0
while out_row < 3:
    row = 1
    while row < 10:
        col = 2 + out_row * 3
        line_ = ''
        while col < 5 + out_row * 3:
            phrase = ''
            if col < 10:
                phrase = f'{col} x {row} = {row * col:^3d}  '
            line_ = line_ + phrase
            col += 1
        print(line_)
        row += 1
    print()
    out_row += 1
 

나의 전략은 세분화였다. 우선 밑으로 2단을 반복으로 만들고, 그 옆에 3단,4단을 반복 붙여나가는 형식을 사용했다.

그리고 바깥에서 5로 시작하는, 8로 시작하는 반복을 시행한다.

그래서 3중 반복이 필요했다. 10단은 빈 문자열을 붙이는 방법으로 출력되지 않도록 조건을 설정했다.

 

"""

4/20 퀴즈

모래시계

"""

# size = int(input('원하는 모래시계의 크기를 입력하세요.'))
# i = 0
# while i < size * 2 - 1:
#     if i < size:
#         print(' ' * (i) + '*' * ((size - i) * 2 - 1))
#     else:
#         print(' ' * (2 * size - 2 - i) + '*' * (2 * (i - size) + 3))
#     i += 1
 

C에서 해본 기억이 있으니까, 금방 응용가능(그래놓고 20트 이상)했다. 오히려 써놓고 보니 중괄호 없는게 점점 익숙해지는 기분이다.

 

"""

4/20 퀴즈

바람개비

"""

size = int(input('원하는 바람개비의 크기를 입력하세요.'))
i = 0
while i < size * 2:
    if i < size:
        print(' ' * i, '*' * (size - i), ' ' * (size - i - 1), '*' * (i + 1), sep='')
    else:
        print('*' * (2 * size - i), ' ' * (i - size), '*' * (i - size + 1), sep='')
    i += 1
 

커지는 증감량이 1씩만 증감하고 있고 홀수, 짝수 구분할 필요가 없어서 오히려 모래시계보다 더 쉬운 느낌이었다. 모양만 보고 쫄 필요 없다.

 

이후 남은 수업시간은 아직 미쳐 못푼 문제를 while만 사용해서 풀어보기로 해봅니다.

 

감사합니다.