본문 바로가기
프로그래밍/파이썬 문법

호기심 파이썬(제어문 : for문을 쉽게 생각하는 법)

by 인성패밀리 2022. 4. 22.
반응형

반복문은 조건에 따라 반복하는 while 반복문과 범위에 따라 반복하는 for문이 있습니다. 이 중 while 반복문은 어떠한 경우에도 반복할 수 있는 반복문이나 for문은 범위에 따라 사용하기 때문에 제한적입니다.

 

그러나 제한적이여도 for 반복문은 너무나도 편리한 반복문입니다.

 

while 반복문이든 for 반복문이든 반복문에서 중점적으로 보아야할 것은 어떤 것을 반복할 것인지, 얼마나 반복할 것인지 찾는 것이 굉장히 중요합니다.

 

따라서 반복문을 사용하는데 헷갈리는 부분이 있다면 반드시 이 두 가지를 확인해보아야 합니다.

 

"""
만약 다음과 같은 출력 결과를 얻고 싶다면?

실행 결과:

양의 정수를 입력하시오: 5
#####
####
###
##
#
"""

# 5를 입력하면 #으로 만든 삼각형이 나오면 된다. 우선 수동으로 써보자.
print("#####")
print("####")
print("###")
print("##")
print("#")

이 코드를 실행하면 실행 결과와 같이 똑같이 나오게 됩니다.

 

반복문에서 중요한 점은 어떤 것을 반복할 것인지, 얼마나 반복할 것인지 찾는 것이 중요하다고 하였습니다.

우선 얼마나 반복할지는 대충 나온 것 같습니다. 5를 입력하면 #이 다섯 줄 나온 것으로 보아 5번 반복하는 것을 눈치채야합니다. 그 다음 어떤 것을 반복할 것인지 찾아보겠습니다.

 

수동으로 써놓은 print 함수를 유심히 봐야합니다. 저 print문을 보면 print("#" * 정수)로 바꾸어 표현할 수도 있습니다.

print("#" * 5)
print("#" * 4)
print("#" * 3)
print("#" * 2)
print("#" * 1)

# 여기서 똑같은 글자를 제외하고 각 줄마다 변하는 부분을 ?로 표시하겠습니다.
print("#" * ?)  # 이와 같이 정리할 수 있습니다.

마지막 줄에 있는 문장이 반복에 사용될 코드입니다. 쉽게 말해 공통점인 부분을 찾아야합니다. 

 

그렇다면 두 가지가 모두 등장하였습니다.

 

어떤 것을 반복할 것인지? : print("#" * ?)

얼마나 반복할 것인지? : 5를 입력하면 5번 4를 입력하면 4번 반복함

 

for문은 특히 반복의 범위를 신경써야합니다. 지금과 같이 5 4 3 2 1이 아니라 5 100 4 64 2와 같이 나왔다면 규칙을 찾을 수 없을 것입니다. 반복의 범위는 5번 반복하면 5 4 3 2 1이 나오는 코드여야합니다.

 

그렇다면 이제 정보들을 다 알아보았으니 반복문을 손쉽게 작성할 수 있습니다.

"""
만약 다음과 같은 출력 결과를 얻고 싶다면?

실행 결과:

양의 정수를 입력하시오: 5
#####
####
###
##
#
"""
n = int(input("양의 정수를 입력하시오: "))  # 양의 정수를 입력받는 코드
for i in range(n, 0, -1):  # 5 ~ 1까지 순서대로 i에 들어감
    print("#" * i)  # ? 자리에 i가 들어감

 

이런 식으로 구구단도 살펴보겠습니다.

"""
2 x 1 = 2
2 x 2 = 4
..
..
9 x 8 = 72
9 x 9 = 81
"""
# 잘 모르겠으니 2단만 우선 무식하게 print로만 써보겠습니다.
# print(2, "x", 1, "=", 2*1)
# print(2, "x", 2, "=", 2*2)
# print(2, "x", 3, "=", 2*3)
# print(2, "x", 4, "=", 2*4)
# print(2, "x", 5, "=", 2*5)
# print(2, "x", 6, "=", 2*6)
# print(2, "x", 7, "=", 2*7)
# print(2, "x", 8, "=", 2*8)
# print(2, "x", 9, "=", 2*9)

# 공통점은 그대로 쓰고 다른 부분만 ?로 표시하겠습니다.
# print(2, "x", ?, "=", 2*?)

# 2단을 출력할 때의 반복할 코드가 나왔습니다.
# 2단은 9번 반복이며 ?자리에 들어갈 숫자는 1~9까지 순서대로 들어갑니다.
# for i in range(1, 10):
#     print(2, "x", i, "=", 2*i)

# 그렇다면 3단을 출력하려면 어떻게 해야할까요?
# for i in range(1, 10):
#     print(3, "x", i, "=", 3*i)

# 4단은?
# for i in range(1, 10):
#     print(4, "x", i, "=", 4*i)

# 역시 구조가 똑같습니다. 이 경우 반복문을 사용하는 것이 가능합니다.
# 마찬가지로 공통점은 똑같이 두고 달라지는 부분을 ?로 표시해보겠습니다.
# for i in range(1, 10):
#     print(?, "x", i, "=", ?*i)

# 반복에서 사용할 코드가 나왔습니다.
# 구구단은 2단부터 9단까지 있으므로 반복의 범위는 2 ~ 9입니다.
for j in range(2, 10):
    for i in range(1, 10):
        print(j, "x", i, "=", j*i)

 

반복문을 어떻게 작성해야 할지 잘 모르겠다면 가장 무식한 방법부터 사용해서 공통점을 찾은 후 한 단계씩 넘어가는 것이 가장 좋습니다. 이것이 훈련이 된다면 자연스럽게 반복할 코드와 범위가 눈에 보이게 될 것입니다.

반응형

댓글