파이썬을 이어서 공부했는데 조건문과 반복문까지 진도를 나가니 여러 가지 게임을 할 수 있어서 즐거웠습니다.
같은 내용의 게임이라도 이전에는 코드를 작성하는 데 급급했다면 이번엔 알고리즘을 생각해 볼 수 있어서 특히 더 좋았어요!😌
Ⅰ. 개요
파이썬에서 조건문을 이해하기 위해 순차 구조, 선택 구조, 반복 구조를 알아야 한다. 순차 구조는 '물이 위에서 아래로 흐르듯 차례대로 흘러가는 것'이고 선택 구조는 분기 지점을 나눠 '특정 조건에 해당할 때 다른 방향으로 흘러가는 것'이다. 반복 구조는 처음부터 끝까지든 중간 과정이 됐든 특정 동작을 반복하는 것이다. 조건문의 구조는 if, if ~ else, if ~ elif ~ else, 중첩 if가 있다. 반복문은 특정 부분을 원하는 횟수만큼 반복하는 구문으로 for와 while, 중첩 for/while 구조를 이용한다.

https://docs.python.org/3/tutorial/controlflow.html
Ⅱ. 파이썬 조건문
조건문을 이해하기 위해선 순차 구조, 선택 구조, 반복 구조를 알아야 한다. 순차 구조는 순차적(Sequential)이라는 영어 단어의 뜻, 국어 사전의 정의처럼
차례를 좇음.
출처: 표준국어대사전
시작부터 종료까지 각 단계가 순서대로 실행되는 구조이다. 가장 단순하지만 실제로 많이 사용되는 구조이다. 폭포가 위에서 아래로 흐르는 예시를 생각하면 이해하기 쉽다! 실생활을 예시로 들자면 늦은 밤 집에 들어와서 자기 전까지 하는 일 즉, 씻거나 일기를 쓰거나 빨래, 청소 등의 각자의 루틴을 생각하면 좋다.
선택 구조는 두 가지의 경우 중에서 어느 하나가 선택되고 그 방향으로 진행되는 걸 의미한다. 우리가 등산하다 갈림길에서 어떤 길을 선택하는지 생각하면 이해가 쉽다. 반복 구조는 특정 단계가 여러 번 반복해서 실행되는 것인데 집에서 자기 전에 항상 유튜브를 보는 것도 반복 구조이다.
코딩을 하는 데 있어서 조건문은 필수이자 반드시 이해하고 넘어가야 할 부분이다. 정말 많이 쓰이며 조건문에 의해 다양한 작동 구조 프로그램을 만들 수 있다. 조건문은 예전에 영어를 배울 때 가정법을 생각하면 좋다. 선택 구조를 가지는 데 갈림길에서 선택하기 전 '만약에 어떤 조건이 왔을 때 이 길을 선택한다.'라는 명제에 따라 작동하기 때문이다. 그래서 조건문이며 실생활 예시로 친구와 어느 카페를 갈지 선택할 때 넓은 곳이 좋다거나 커피가 맛있어야 한다 등이 조건이다.
파이썬에서 가장 단순한 조건문은 if만 단독으로 쓰일 때다.
score = 100
if score > 90 :
print("A학점입니다.")위의 예시처럼 if 구문이 단독으로 사용되며 if와 ':(콜론)' 사이에 조건이 들어간다. 해당 조건에 일치(참)할 때만 if 구문 안에 코드가 실행된다.
두 번째로 if ~ else 구문이 있다.
score = 80
if score > 90 :
print("A학점입니다.")
else :
print("F학점입니다.")언뜻 보면 else 구문만 추가된 형태인데 작동 방식은 if 조건이 충족(참)되지 않을 때 else 구문 안에 코드가 실행되는 구조이다. 여기서 지금까지 코딩을 공부해오며 느낀 팁을 하나 주자면
※ 밑에서 서술하겠지만 if ~ else 구문을 사용하는 데 많은 고민이 필요하다. if 구문에 조건이 명확하지 않으면 else 구문이 작동하기 때문에 프로그램이 뜻하지 않게 동작할 수 있다.
세 번째로 if ~ elif ~ else 구문이 있다.
score = 60
if score > 90 :
print("A학점입니다.")
elif score > 80 :
print("B학점입니다.")
else :
print("F학점입니다.")다른 언어와 달리 파이썬은 switch ~ case 문법이 없다. switch ~ case 문법을 간략히 설명하자면 switch 다음에 조건이 오는데 해당하는 조건에 따라 case(경우)별로 특정 동작을 구분지은 뒤 그 해당 동작을 작동시킨다. 더 자세한 부분은 Java, C 언어를 배우면서 공부해보길 권장한다.
if와 else 구문 사이에 elif 구문이 추가된 형태인데 elif 조건은 if 조건이 참이 아닐 때 해당하는지 비교를 진행한다. 만약 elif 조건에 들어맞는다면 그 구문 안에 코드가 작동하고 그렇지 않다면 else 구문의 코드가 동작한다. elif 구문은 여러 개 작성할 수 있으며 그에 따라 조건을 세세하게 나눌 수 있다.
마지막으로 중첩 if 구문인데
price = 1000
if price > 100 :
if price > 500 :
print("가격이 500원 이상입니다.")if 구문 안에 또 다른 if 구문이 있는 형태이다. 이건 if 구문안에서만 가능한 게 아니고 if ~ else, if ~ elif ~ else 구문 모두에서 그 안에 또 다른 if, if ~ else, if ~ elif ~ else 구문을 작성할 수 있다. 위의 예시처럼 가격이 1000원인 데이터가 있다. 그 데이터는 100원 이상인 조건에 해당하고 그 안에 들어가니 또 다른 조건으로 500원 이상이라는 조건이 있다. 이 조건에도 해당하므로 그 안에 출력문이 실행되어 '가격이 500원 이상입니다.'가 나온다.
※ 여기서 또 하나의 팁!!
파이썬에서는 조건문을 쓸 때 들여쓰기가 중요하다. 나중에 반복문, 함수, 클래스 모두에서 들여쓰기를 해야 하는데 일반적으로 스페이스바 4번을 한 형태이다. 다른 언어에서는 조건을 '()' 소괄호로 구분하고 그 안에 실행될 코드를 '{}' 중괄호로 구분하지만 파이썬에서는 들여쓰기로 조건과 실행 코드를 구분한다. 지키지 않을 시 오류가 발생하니 반드시 지키도록 하자!
조건문을 실습으로 연습하면서 미션을 받고 직접 코드를 구성해서 작성해보았다. 사람마다 다양한 방식으로 코드를 작성했고 꼭 정답이 있는 것은 아니므로 올리는 코드는 참고용으로 보면 좋을 것 같다. 검색해보면 같은 문제에 대해 다양한 사람이 써놓은 답이 있으므로 참고하면 좋을 것 같다. 처음에 코드가 길거나 이상해보여도 정상적으로 작동한다면 성공한 것이니 알고리즘은 조건문을 완전히 익힌 후 생각하는 게 좋다!
미션: 점수를 입력받아 90점 이상은 A학점, 80점 이상은 B학점, 70점 이상은 C학점, 60점 이상은 D학점, 그 외는 F학점이 출력되도록 구현해보자!(주의. 밑에 필자가 작성한 코드가 있으므로 문제를 먼저 풀어보고 보시길 권함)
score = int(input("점수를 입력해주세요 : "))
if score >= 90 :
print("A", end="")
else :
if score >= 80 :
print("B", end="")
else :
if score >= 70 :
print("C", end="")
else :
if score >= 60 :
print("D", end="")
else :
print("F", end="")
print("학점입니다.")Ⅲ. 파이썬 반복문
반복문은 특정 단계가 여러 번 반복하는 과정이다. 코딩으로 얘기하면 코드의 특정 부분이 몇 번 반복할지 직접 정해서 반복 실행시키는 것이다. 사용하는 이유로는 반복되는 불필요한 코드를 줄일 수 있어서 수백 줄의 코드가 단 몇 줄로 작성될 수 있다!
파이썬에서 반복문을 사용하기 위해서 for 구문과 while 구문을 이해해야 한다. for 구문은 'for 변수 in range(시작값, 끝값+1, 증가값) :'의 형태로 작성한다.
for i in range(1, 11, 1) :
print(i, "", end="")
출력 결과 => 1 2 3 4 5 6 7 8 9 10range는 파이썬의 내장 함수로 지정된 범위의 값을 반환하는 걸 의미한다. for 구문에서 사용하게 되면 range의 첫 번째 가변인자는 얼마의 숫자부터 시작할지 지정할 수 있다. 만약 1이라면 1부터 시작하고 기본적으로 아무 것도 입력하지 않고 생략할 수 있는데 그러면 0부터 시작한다. 두 번째 가변인자는 끝값+1이라고 설명하긴 했지만 단순하게 몇 번 반복할지 생각하면 쉽다. 시작값을 지정하지 않으면 기본적으로 0부터 시작한다고 했는데 끝값+1이 10이라면 10번 반복한다. 대신 0부터 9까지 10번이다. 위의 예시는 1번부터 10번까지 10번인데 개수가 10인데 왜 11이냐면 0부터 시작하는 기본값이 아닌 1부터 시작하기 때문에 10까지 출력하기 위해 11이다. 그래서 끝값+1이다. 마지막 가변인자는 증감값으로 시작값을 몇 만큼 증가시킬지 정한다. 1이라면 더하기 1을 하고 만약 2라면 더하기 2를 하면서 증가한다. 위의 예시에서 증감값이 2로 바뀐다면 출력 결과는 '1 3 5 7 9'가 될 것이다.
※ for 구문은 중첩 if 구문처럼 for 구문 안에 중복해서 사용할 수 있다. 이는 곧 설명할 while 구문에서도 마찬가지로 작동하며 for 구문 while 구문, while 구문 for 구문처럼 다른 반복문도 중첩해서 사용할 수 있다.
※ 파이썬에서 for 구문은 Java나 Javascript 등 다른 언어의 foreach 구문과 유사하다. 그리고 특이점으로 Java에서 for 구문을 돌릴 때 변수 i의 값을 -1로 하거나 i--를 해주면 맨 처음이나 한 차례 이전으로 되돌아갈 수 있지만, 파이썬 for 구문에서는 가능하지 않다.
while 구문은 조건을 넣어 반복이 종료될 시점을 정하는 방법과 True값을 넣어 무한 반복을 시키는 방법이 있다. 무한 반복을 하면 프로그램이 종료되지 않기 때문에 프로그램을 종료시키기 위해 break를 사용할 수 있다. break는 if 구문을 통해 특정 조건에 해당하면 멈추게 할 수 있다.
count = 0
while True :
count += 1
if count == 10 :
break
while count < 10 :
count += 1단순하게 10번 반복시키는 while 구문을 예시로 작성해보았다. while True 구문은 무한 반복문이기 때문에 if 구문과 break를 통해 반복 종료 시점을 별도로 지정했고 두 번째는 종료 시점을 while 구문 다음에 조건을 지정했다. while 구문 뒤에 True말고 조건이 올 때 중요한 점은 조건이 참이면 계속 반복되고 거짓일 때 반복문이 종료된다는 특성이다. 이 점을 유의하여 조건을 잘 정하는 게 중요하다. 처음에 이 특성이 너무 헷갈려 반복문이 종료되지 않은 경우가 많았는데 반복해서 코드를 작성하다 보면 이해할 수 있다!
※ for 구문과 while 구문에 사용할 수 있는 구문 중 break와 또 다른 하나는 continue 구문이 있다. continue는 반복문을 종료시키는 break와 달리 continue 밑에 작성된 코드 부분을 생략하고 반복문의 처음으로 다시 돌아간다. 예시로 1부터 100까지 숫자 중 짝수를 생략하고 출력시킬 때 활용할 수 있다.
직접 했던 미션을 이야기하기 전에 알고 가면 좋을 팁을 공유해보고자 한다.
※ 의사 코드: 프로그램 코드가 아닌 코드와 비슷한 형식이지만 한글 혹은 영어로 적는 것을 '의사 코드(pseudocode, 슈도 코드)'라고 한다. 의사코드는 직접 작동하진 않지만 프로그램 알고리즘 흐름을 파악하는 데 도움이 된다. 이 부분은 다른 좋은 예시를 찾을 수 있으니 참고하길 바라며 간단하게 설명하자면 프로젝트를 진행할 때 요구사항이나 점검 사항 등에 대해 필요한 부분을 목차별로 구분하고 그에 필요한 코드의 진행이 어떻게 될지 한글로 적는 것이다. 이는 파이썬뿐만 아니라 다른 언어로 코딩을 할 때도 유용하니 연습해보면 좋을 것 같다!
미션: 반복문을 연습할 때 가장 많이 하는 구구단을 출력해보자!
* 출력하는 방식은 다양하므로 여러분이 생각하는 방식대로 출력해보세요.
# 예시 1
for i in range(2, 10, 3) :
for j in range(1, 10) :
if (i+2) < 10 :
print(i, "X", j, "=", i*j, "\t", (i+1), "X", j, "=", (i+1)*j, "\t", (i+2), "X", j, "=", (i+2)*j)
else :
print(i, "X", j, "=", i*j, "\t", (i+1), "X", j, "=", (i+1)*j)
print()
# 예시 2
for i in range(2, 10, 1) :
for j in range(1, 10, 1) :
print(i, "X", j, "=", i*j)
print()후기
오늘 나간 수업은 조건문과 반복문인데 첫 시간엔 어떻게 보면 지루할 수 있는 개념이야기 위주였지만 이번엔 많은 실습을 해볼 수 있어 즐거웠습니다.😁 역시 코딩을 배우는 재미는 직접 배운 내용으로 미션을 받아 나만의 프로그램, 로직을 만들어 보는 것이었습니다. 앞으로 리스트, 메서드, 클래스를 배울텐데 그때는 더 다양한 미션과 더 다양한 로직을 구성할 수 있길 기대해봅니다.🥰
Log in