HW엔지니어 15년 차 비전공 직장인이 파이썬을 독학하여 공부한 내용을 기록으로 남깁니다. 오늘은 조건문과 반복문에 대해서 정리하겠습니다.
조건문
논리형
논리형은 boolean이라고도 불리며 결괏값은 참(True) 또는 거짓(False) 두 가지밖에 없습니다. my_bool1 = True, my_bool2 = False, my_bool3 = 1 < 2, my_bool4 = 1 == 2와 같은 형태로 쓰입니다.
비교 연산자
비교 연산자에는 ==, !=, >, <, >=, <=와 같은 연산자가 있습니다. ==는 두 개의 값이 같은지를 물어봅니다. !=는 두 개의 값이 다른지를 물어봅니다. >, <, >=, <=는 두 개의 값의 크기를 비교합니다.
논리 연산자
논리 연산자는 and, or, not과 같은 연산자가 있습니다. and는 그리고 or는 또는 not은 아니다라는 의미입니다. and는 두 개의 값이 모두 True여야지만 True가 됩니다. or는 두 개의 값 중 하나만 True여도 True가 됩니다. not은 결괏값을 뒤집습니다. not True이면 False가 되는 식으로 말이죠.
if
파이썬에서 조건문을 표현하기 위해서 if라는 키워드를 사용합니다. 조건이 참인지 거짓인지 판단해서 그 조건에 따라 처리흐름을 바꿀 수 있습니다.
if문의 형태는 아래와 같습니다. if라는 키워드 뒤에 조건문이 옵니다. 콜론으로 마무리되며 실행할 명령은 다음줄에 들여 쓰기를 적용하여 적어줍니다. 조건문이 참이면 명령을 실행하고 거짓이면 명령을 skip 하여 다음 코드 줄로 넘어갑니다.
if 조건 :
실행할 명령1
실행할 명령2
예를 들어 아래와 같은 예제 코드에서 조건문을 만족하므로 실행하면 당신이 Lefty군요. 만나서 반가워요가 출력됩니다.
name = 'Lefty'
if name == 'Lefty' :
print('당신이 Lefty군요.')
print('만나서 반가워요.')
else와도 함께 쓸 수 있습니다. if else구문은 아래와 같습니다. if의 조건이 True이면 if 구문의 명령이 실행되고 if의 조건이 False이면 else구문의 명령이 실행됩니다.
if 조건 :
실행할 명령1
실행할 명령2
else :
실행할 명령1
실행할 명령2
elif와도 함께 쓸 수 있습니다. if elif구문은 아래와 같습니다. if의 조건이 True이면 if 구문의 명령이 실행되고 if의 조건이 False이고 elif의 조건이 True이면 elif구문의 명령이 실행됩니다. if와 elif의 조건문이 False이면 다음 코드 줄로 넘어갑니다.
if 조건 :
실행할 명령1
실행할 명령2
elif :
실행할 명령1
실행할 명령2
elif, else 모두 함께 쓸 수도 있습니다. 아래 예제에서 name이 Alice이니 당신이 Alice군요라는 결괏값이 출력됩니다.
name = 'Alice'
if name == 'Alice' :
print('당신이 Alice군요.')
elif name == 'Bob' :
print('당신이 Bob군요.')
else :
print('당신은 누구십니까?')
반복문
반복문은 반복되는 지루한 구문을 처리해 줍니다. 파이썬에는 두 가지 형태의 반복문이 있습니다. 첫 번째는 조건을 기준으로 반복하는 구문과 횟수를 기준으로 반복하는 구문이 있습니다. 보통 조건을 기준으로 반복할 때는 while을 쓰고, 횟수를 기준으로 반복할 때는 for를 씁니다. 반복문을 쓰면 코드가 줄어듭니다.
조건으로 반복하기 (while)
while
조건으로 반복문을 작성하기 위해서는 while을 사용합니다. while의 구문은 아래와 같습니다. while 뒤의 조건이 참인 동안에는 while문 안에 있는 명령이 반복해서 실행됩니다. 조건이 거짓이 되면 반복을 종료합니다.
while 조건 :
실행할 명령1
실행할 명령2
다음과 같은 예제를 살펴보겠습니다. count는 0에서부터 시작하여 while문으로 들어갑니다. count는 0이므로 횟수:0을 출력하고 count를 1로 올립니다. count가 아직 3보다 작으므로 반복을 진행합니다. 다음 반복에서는 횟수:1을 출력하고 count를 2로 올립니다. count가 아직 3보다 작으므로 반복을 진행합니다. 다음 반복에서는 횟수:2를 출력하고 count를 3으로 올립니다. 다음 반복에서 3은 3과 같으므로 거짓이 되어 while문을 빠져나옵니다.
count = 0
while count < 3 :
print('횟수:', count)
count = count +1
continue
반복문과 함께 사용할 수 있는 키워드는 continue가 있습니다. while문에서 반복을 돌고 있을 때 continue를 만나면 다시 while 조건문으로 돌아갑니다. 아래의 예제에서 count의 초기값은 0입니다. while문으로 들어가면 count 0은 5보다 작으므로 명령문으로 들어갑니다. count를 1로 올립니다. count1을 2로 나누면 나머지가 1이 되므로 if문이 참이되어 다음 명령으로 넘어가는데 countinue를 만납니다. continue는 다시 while조건문으로 들어갑니다. 다음 while 반복문에서 count는 1이되므로 count를 2로 올립니다. 2를 2로 나눈 나머지는 0이므로 countinue는 뛰어넘고 print(count)를 실행하여 2를 출력합니다. count가 4일 때까지 반복하면 결과는 2와 4를 출력하게 됩니다.
count = 0
while count < 5 :
count = count +1
if count % 2 == 1:
countinue
print(count)
break
break를 만나면 반복문을 종료합니다. while뒤에 True가 왔기 때문에 무한히 반복합니다. name이 종료가 오면 break를 만나기 때문에 종료합니다를 출력하고 종료합니다. 만약 다른 값이 입력되면 OO님, 안녕! 이 계속 출력됩니다.
while True:
name = input('당신의 이름은?')
if name == '종료':
print('종료합니다.')
break
print('{}님, 안녕!'.format(name))
input()
input()은 프로그램 실행 중에 사용자 입력을 받는 함수입니다. print와 같은 내장 함수여서 바로 가져다 쓸 수 있습니다. 항상 문자열로 받아옵니다. 입력은 출력과 입력 둘 다 진행합니다. 먼저 괄호 안의 당신의 이름은?과 커서가 깜빡임을 출력합니다. 문자열이 입력되면 name으로 대입합니다.
name = input('당신의 이름은?')
print('{}님, 안녕!'.format(name))
type()
type()은 자료형을 확인하는 함수입니다. 어떤 변수나 어떤 변수에 저장되어 있는 값의 type을 확인합니다. 아래 예제에서 input은 항상 문자열로 가져온다고 했으니 type은 항상 str이 될 것입니다.
name = input('당신의 이름은?')
print('{}님, 안녕!'.format(name))
print(type(name))
int() str()
type을 숫자형으로 바꿀 때 int()를 쓰고 type을 문자형으로 바꿀 때 str()을 씁니다. 아래 예제에서 나이를 입력받아 3을 빼서 출력하는 코드인데 input은 문자형이므로 앞에 int()로 싸주어서 숫자형으로 바꾸게 됩니다.
age = int(input('나이를 입력하세요:'))
print('{}살 이시군요!'.format(age - 3))
횟수로 반복하기 (for)
for
for는 횟수로 반복할 때 쓰입니다. for는 아래와 같은 형태로 사용됩니다. for in 문 뒤에 콜론이 오고 다음 줄 실행할 명령은 들여 쓰기를 해야 합니다. 들여 쓰기는 탭 또는 space 4칸이 적용됩니다. 순서 열은 리스트, 튜플, 문자열 등이 사용됩니다. 처음 요소값부터 순차적으로 변수에 들어가고 실행할 명령을 수행합니다. 명령을 수행하면 리스트의 다음 요소값이 변수로 들어가서 명령이 실행됩니다. 마지막 리스트의 요소값까지 반복됩니다.
for 변수 in 순서열 :
실행할 명령 1
실행할 명령 2
예를 들어 아래와 같은 코드를 실행하면 횟수:1 횟수:2 횟수:3이 출력됩니다.
my_list = [1, 2, 3]
for count in my_list:
print('횟수:', count)
다른 예를 들어 아래와 같은 코드를 실행하면 문자:c 문자:o 문자:d 문자:i 문자:n 문자:g이 출력됩니다.
my_str = 'coding'
for letter in my_str:
print('문자:', letter)
range(stop)
range()는 숫자를 입력받아서 순서 열을 만들어 주는 내장 함수입니다. 내장 함수는 파이썬에 내장된 함수로 필요에 따라 쓰면 그만입니다. range()는 for문과 뗄 수 없는 존재입니다. 괄호 안에 숫자 하나를 넣어주면 0부터 입력한 숫자 전까지의 순서 열이 만들어집니다.
예를 들어 아래와 같은 코드를 실행하면 횟수:0 횟수:1 횟수:2가 출력됩니다.
for count in range(3):
print('횟수:', count)
range(start, stop)
range()의 괄호 안에는 두 개의 값을 넣을 수도 있습니다. 콤마로 구분이 되며 콤마 앞의 숫자는 시작점이고 콤마 뒤의 순자 전까지의 순서 열이 생성됩니다.
예를 들어 아래와 같은 코드를 실행하면 횟수:0 횟수:1 횟수:2가 출력됩니다.
for count in range(0, 3):
print('횟수:', count)
for x 2
for가 두 번 중첩된 구문도 사용 가능합니다. 아래의 예를 실행하면 i:0,j:0 i:1,j:0 i:0,j:1 i:1,j:1이 반환됩니다. 실행 순서는 위의 for문에서 j에 0이 들어가는 동안 아래의 for i에 0과 1이 들어가서 명령을 수행합니다. 다음으로 위의 for문 j에 1이 들어가는 동안 아래 i에 0과 1이 들어가서 명령을 수행합니다.
for j in range(2):
for i in range(2):
print('i:{}}, j:{}'.format(i, j))
comprehension
우리나라 말로는 리스트 내포입니다. for문을 사용하여 리스트를 만들 때 사용합니다. 아래 예제를 살펴보겠습니다. 실행하면 홀수만 골라내서 odd_numbers 리스트에 담깁니다.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
odd_numbers = []
for number in numbers:
if number % 2 == 1:
odd_numbers.append(number)
위의 코드를 comprehension형태로 표현하면 아래와 같이 두줄의 코드로 줄여서 표현할 수 있습니다.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
odd_numbers = [number for number in numbers if number % 2 == 1]
이상으로 HW엔지니어 15년차 비전공 직장인의 파이썬 독학 조건문과 반복문에 대한 정리 마치겠습니다.
'데이터 분석 및 업무 자동화' 카테고리의 다른 글
Python Pandas 핵심 요약 - pivot_table, groupby, 시각화 (0) | 2022.02.14 |
---|---|
파이썬 판다스 기능 핵심 요약 - 파일 읽어오기, 통계값, 색인 (0) | 2022.02.09 |
평범한 직장인의 파이썬 독학 기록 - 리스트, 딕셔너리, 함수 (0) | 2022.02.05 |
직장인 파이썬 독학 기록 - 왕기초편 (0) | 2022.02.04 |
MySQL 데이터 그룹화하기 - GROUP BY (0) | 2022.01.27 |
댓글