26. 파이썬 함수와 입출력, 파일처리 방법

26. 파이썬 함수와 입출력, 파일처리 방법

이제부터는 파이썬 함수와 입출력, 파일처리 방법 에 대해 공부해 보겠습니다.
지난 시간까지 공부한 내용을 참고해서 봐주세요~

파이썬 입출력은 프로그래밍 설계와 관련이 있습니다.
프로그램을 만들기 전 동작을 어떻게 진행할 것인지 프로그래머가 설계를 하게 되는데
이 설계 단계에서 가장 중요하게 여기는 부분이 파이썬 입출력 설계 입니다.

함수를 만들 때 특정 프로그램만 사용하는 함수를 만들 것인지 아니면 모든 프로그램이 공통적으로 사용할 수 있게끔 함수를 만들 것인지, 또는 오픈 API 를 공개해서 외부 프로그램들 도 사용 하게끔 할 것 인지 등
이런 모든 부분이 입출력과 연관이 있습니다.

파이썬 함수

파이썬 함수의 정의

믹서기를 사용한다고 가정해 보세요
믹서에 과일 같은 것들을 넣습니다.
그리고 믹서기의 전원을 켜서 안에 들어있는 과일들을 갈아 과일 주스를 만듭니다.
여기서 우리가 믹서기에 넣은 과일들은 ‘입력’이 되는 것이고 과일 주스는 ‘출력'(결과값) 이 되는 것 입니다.
그러면 여기서 믹서기는 무엇 일까요?

26. 파이썬 함수와 입출력, 파일처리 방법
이미지 출처 : 점프투파이썬

여기서 사용되는 믹서기가 지금 공부하려고 하는 함수 와 같은 것 입니다.
입력되는 값을 가지고 어떤 작업을 진행한 뒤에 그 결과물을 출력하는 것.
그것이 함수가 하는 일 이라고 보시면 됩니다.

예전부터 우리는 함수에 대해 공부 한 적이 있지만 함수에 대해서 그닥 깊이 생각해 본 적이 별로 없을 겁니다.
예를 들어서 x = 3y + 2 같은 수식도 함수라고 할 수 있습니다.
하지만 이를 그냥 수학 시간에 배운 그래프 중 하나인 직선 그래프로만 알고 있고
y 값에 따라서 x 출력이 변화하는 함수라고는 생각을 못했을 수 있습니다.

프로그래밍에서 함수는 정말 중요한 요소 입니다.
함수에 대해서는 좀 더 깊이 생각을 해봐야 할 것입니다.

파이썬 함수 왜 사용할까?

프로그래밍을 진행 하다 보면 같은 내용을 반복해서 작성하는 경우가 종종 있습니다.
이럴 때 바로 함수를 사용하면 됩니다.
반복적으로 사용되는 경우가 있다면 ‘반복적으로 사용되는 가치 있는 부분’ 을 하나의 덩어리로 묶어서
a라는 입력 값이 주어지면 b 라는 결과값을 출력하세요~ 라는 식으로 함수로 작성하는 것이 현명한 프로그래머일 것입니다.

파이썬에서 함수를 사용하는 이유 또 한 가지는 우리가 만든 프로그램을 함수, 즉 기능 별로 구분을 해놓으면 프로그램이 어떻게 흘러가는지 알아보기가 쉽습니다.
공장에서 원재료가 공정들을 하나 하나 걸쳐 비로서 하나의 완성품이 나오는 것처럼 프로그램도 입력한 값들이 여러개 의 함수를 거치고 거쳐 우리가 원하는 결과물을 볼 수 있는 것 입니다.
이렇게 되면 프로그램의 흐름도 파악하기가 쉽고 오류가 나도 어떤 부분에서 오류가 났는지 확인하기도 쉽습니다.

파이썬 함수의 구조

파이썬 함수의 구조를 살펴보겠습니다.

Python
def 함수명(매개변수):
    수행할 문장 1
    수행할 문장 2
    수행할 문장 3
    ....

def 뒤에 함수명이 온 것을 보면 알 수 있듯이 def 는 함수를 만들때 사용하는 파이썬 예약어 입니다.
함수명은 함수를 만들 때 우리가 임의로 만들 수 있습니다.
함수명 뒤에 괄호 안에 매개변수를 넣어주는데 이 매개변수가 함수에 입력으로 전달되는 값이라고 보시면 됩니다.
이렇게 함수를 정의한 뒤에 이때까지 공부했던 if, while, for 문 등과 마찬가지로 수행할 문장 1, 2, 3… 을 입력해 주면 됩니다.
아주 간단한 예를 보겠습니다

Python
def mmmm(a, b):
    return a - b

위 예를 살펴보면 함수의 이름은 mmm 이고 a 와 b 두개의 입력값을 받아서
a에서 b를 뺀 결과를 리턴값으로 하라는 예입니다.
여기에서 사용되는 return 은 함수의 결과값을 돌려주라는 명령어입니다.
실제 위 예를 사용해 보겠습니다.

Python
>>> def mmm(a, b):
...     return a -b
...

mmm 이라는 함수가 만들어 졌습니다.
만들어진 mmm 함수를 사용해 보겠습니다.

Python
>>> a = 2
>>> b = 5
>>> c = mmm(a, b)
>>> print(c)
-3

변수 a 에는 2, b 에는 5 를 대입하고 앞에 만든 mmm 함수에 a와 b 를 입력 값으로 넣어 줬습니다.
그리고 변수 c 에는 mmm 함수의 리턴 값을 대입해줬습니다.
마지막으로 print(c) 로 mmm 함수를 적용한 c 의 결과 값을 확인 할 수 있습니다..

이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

26. 파이썬 함수와 입출력, 파일처리 방법

25. 파이썬 03장 연습문제 풀어보기

25. 파이썬 03장 연습문제 풀어보기

파이썬 03장 연습문제

1. 조건문의 참과 거짓 구분하기

아래 코드의 결과값을 조건문의 참과 거짓을 파악하여 알아봅시다

Python
k = "The credit goes to us, the blame goes to me" # 공은 우리에게로 돌리고, 책임은 내게로 돌려야하오
if "create" in a: print("create")
elif "blame" in a and "me" not in a: print("blame")
elif "goos" not in a: print("goos")
else: print("none")

풀이를 해보겠습니다. k 변수에 대입되어 있는 문자열에서 create 가 없으므로 첫번째 if 문장은 넘어갑니다
첫번째가 거짓이어서 두번째에 나오는 elif 를 만나고 blame 이 포함되어 있고 me 는 포함이 안되어야 하는데 둘다 포함되었으니 이번에도 거짓입니다.
세번째 elif 문에서 goos 는 포함안되어 있으니 참이 됩니다.
결과적으로 goos 가 출력이 되고 else 문은 건너 뛰고 종료가 됩니다

Python
goos

2. 4의 배수의 합 구하기

while 문을 사용해서 1부터 200 까지의 자연수 중에서 4 의 배수의 합을 구해보세요

Python
a = 0
sum = 0
while a <= 200:
    a = a + 1
    if a % 4 == 0:
        sum = sum + a
print(sum)
Python
5100

3. 삼각형 모양의 별 표시하기

Python
*
**
***
****
*****

while 문을 사용해서 별모양으로 삼각형을 표시해보세요

Python
a = 0
while True:
    a += 1
    if a > 5: break
    print('*' * a)

a 라는 변수는 0부터 시작을 하고 while 반복문은 항상 참입니다.
무한루프를 타고 가게 되면서 계속 적으로 a = a + 1 을 해줍니다.
그리고 a 가 5 보다 클 경우에 break 문으로 while 문을 빠져나가게 됩니다.
처음에는 1을 더해서 1 이 a 에 대입되고 5 보다 작기 때문에 ‘*’ 을 a 만큼 즉 1개를 출력하고 다음에는 ‘**’ 그다음엔 ‘***’ 이렇게 마지막으로 ‘*****’ 를 출력해주고 다시 while 문을 돌렸을때 이제 a 가 6이 되므로 거짓이 되어 break 문으로 while 문에서 빠져나가게 됩니다.

4. 1부터 100 까지 출력하기

for 문 을 사용해서 1부터 100 까지 출력을 해보세요

Python
for a in range(1, 101):
    print(a)

for 문에 range 함수를 적용해서 하면 간단하게 해결이 됩니다.

Python
1
2
3
4
...
98
99
100

5. 10명의 학생의 평균 점수 구하기

k 학급에 10명의 학생이 있다고 합니다. 이 학생들의 기말고사 점수는 아래와 같습니다.
for 문을 사용하여 k 학급 학생들의 평균 점수를 구해 보세요
[80, 70, 65, 72, 95, 80, 95, 60, 97, 100]

Python
tot = 0
k = [80, 70, 65, 72, 95, 80, 95, 60, 97, 100]
for jum in k:
    tot += jum
avg = tot / len(k)
print(avg)

k 학급 점수를 k 변수에 리스트로 대입이 된 상태에서
jum 변수는 k 리스트가 끝날때까지 반복이 되며 k 값을 하나씩 가지고 옵니다
tot 라는 변수에 jum 변수에 대입된 k학급 점수를 하나씩 더하게 됩니다.
전체 점수를 다 구해졌으면 for 문이 종료가 되고 avg 변수에 다 합해진 점수 tot 를 k 리스트의 길이로 나누게 됩니다.
그리고 이렇게 구해진 avg 변수의 값을 출력하면 됩니다.

Python
81.4

6. 리스트 컴프리헨션 사용하기

다음 num 리스트에 있는 수 중에서 짝수에만 3을 곱하여 저장하는 코드를 리스트 컴프리헨션을 사용해서 변경해 보세요

Python
>>> num = [1, 2, 3, 4, 5, 6]
>>> kkk = []
>>> for i in num:
...     if i % 2 == 0:
...         kkk.append(i * 3)
>>> print(kkk)
[6, 12, 18]

아래와 같이 변경할 수 있습니다.

Python
>>> num = [1, 2, 3, 4, 5, 6]
>>> kkk = [i * 3 for i in num if i % 2 == 0]
>>> print(kkk)
[6, 12, 18]
  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
25. 파이썬 03장 연습문제 풀어보기

24. 파이썬 for 문과 리스트 컴프리헨션(List comprehension)

리스트 컴프리헨션(List comprehension)은 리스트 안에 파이썬 for 문을 포함하는 문장을 말합니다
리스트 안에 for문을 포함하게 되는 리스트 컴프리헨션(List comprehension)을 사용 하면 편리하고 직관적으로 프로그래밍을 할 수 있습니다.

Python
>>> a = [2, 4, 6, 8]
>>> result = []
>>> for number in a:
...     result.append(number * 3)
...
>>> print(result)
[6, 12, 18, 24]

위의 예제 코드를 살펴보면 a 라는 변수에 리스트가 대입되고 그 a 변수의 요소의 각 항목에 3을 곱해서 그 결과를 result 리스트에 대입하는 코드입니다.

리스트 컴프리헨션(List comprehension)을 사용하여 변경


위 코드를 리스트 컴프리헨션(List comprehension)을 사용해서 다음처럼 변경할 수 있습니다.

Python
>>> a = [2, 4, 6, 8]
>>> result = [number * 3 for number in a]
>>> print(result)
[6, 12, 18, 24]

다음 코드처럼 [1, 2, 3, 4, 5] 라는 리스트가 있는데 홀수에만 4를 곱해서 대입하고자 한다면 List comprehension 안에 if 조건을 사용할 수도 있습니다

Python
>>> a = [1, 2, 3, 4, 5]
>>> result = [number * 4 for number in a if number % 2 != 0]
>>> print(result)
[4, 12, 20]

위 코드를 살펴보겠습니다
if number % 2 != 0 는 만약 number 를 2 로 나눈 나머지가 0 이 아니라면. 즉 홀수 일 경우에만 number * 4 를 대입해주라는 코드입니다.

리스트 컴프리헨션(List comprehension) 문법

대입변수 = [표현식 for 항목 in 반복가능객체 if 조건문]

여러개 for 문 사용

복잡해지긴 하지만 for 문을 여러개 사용하는것도 가능 합니다.

Python
[표현식 for 항목 1 in 반복가능객체 1 if 조건문 1
        for 항목 2 in 반복가능객체 2 if 조건문 2
        for 항목 3 in 반복가능객체 3 if 조건문 3
        ...
        for 항목 4 in 반복가능객체 4 if 조건문 4]

구구단 결과 모두 리스트에 담기

이전에 진행해 봤던 구구단 코드 결과를 리스트에 전부 담고 싶다면 리스트 컴프리헨션(List comprehension) 을 사용해서 간단하게 구현할수도 있습니다

Python
>>> gugudan = [a * b for a in range(2, 10)
...                  for b in range(1, 10)]
>>> print(gugudan )
[2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81]

이렇게 해서 파이썬의 반복문인 while 문과 for 문까지 모두 공부해봤습니다.
for 문과 while 문은 아주 비슷한 형태로 동작을 합니다.
for 문으로 작성한 코드를 while 문 으로 바꿀수 있고
마찬가지로 while 문으로 작성한 코드도 for 문으로 바꿀 수 도 있습니다.
그리고 리스트 안에 for 문을 포함 하는 리스트 컴프리헨션(List comprehension) 문법도 배워봤습니다
이제 다음 포스팅에서는 연습문제를 풀어보도록 해보겠습니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
24. 파이썬 for 문과 리스트 컴프리헨션(List comprehension)

23. 파이썬 for 문과 range 함수

23. 파이썬 for 문과 range 함수

파이썬 반복문 for 문에 대해 두번째 시간을 가져보겠습니다.

파이썬 반복문 for 문과 함께 자주 사용되는 함수 range 함수에 대해 알아보겠습니다.
파이썬 for 문과 함께 자주 사용되는 range 함수 의 경우는 숫자 리스트를 자동으로 만들어 줍니다.
그렇기에 for 문과 함께 사용되는 경우가 많습니다.

range 함수의 간단한 예

Python
>>> r = range(5)
>>> r
range(0, 5)

위 예에서 range(5) 는 0 에서 부터 5 를 포함하지 않는 5까지, 즉 5 미만의 숫자를 포함하는 range 객체를 만들어 주게 됩니다.
처음 시작하는 숫자와 끝나는 숫자를 지정해 주려면 range(시작 숫자, 끝나는 숫자) 형태로 사용하면 됩니다.
이때 끝나는 숫자의 경우에는 포함 되지 않기 때문에 원래 생각한 끝나는 숫자보다 하나 더 크게 사용해야 합니다.

Python
>>> r = range(1, 6)
>>> r
range(1, 6)

range 함수 예제

예를 들어 파이썬 for 문과 range 함수 를 사용하면 1 부터 100 까지 의 합을 구하는 프로그래밍을 쉽게 구현 할 수 있습니다.

Python
>>> a = 0
>>> for i in range(1, 101):
...     a = a + i
...
>>> print(a)
5050

위의 코드를 살펴보겠습니다.
range(1, 101) 은 숫자 1부터 101 미만, 그러니깐 1부터 100 까지의 데이터를 가지고 있는 객체입니다.
그러므로 위에서 i 변수에 숫자 1부터 100 까지 하나하나 차례로 대입이 되면서 a = a + i 문장을 반복적으로 실행을 하고 최종적으로 a 변수에는 1부터 100까지 의 합인 5050 이 됩니다.
이전에 진행했던 점수를 확인해서 합격 문장을 출력해 주는 코드에서도 range 함수를 사용해서 변경할 수 있습니다.

원래 코드입니다. j 변수 리스트의 숫자 순서를 변경해 확인하기 좋게만 바꿔서 진행해 보겠습니다.

Python
# mark_02.py
j = [80, 75, 90, 65, 30]
n = 0
for i in j:
    n = n + 1
    if i < 70:
        continue
    print("%d 번째 학생은 합격입니다. 축하합니다." % n)

위 코드를 range 함수를 이용해 변경해 보겠습니다.

Python
# mark_03.py
j = [80, 30, 75, 90, 65]
for i in range(len(j)):
    if j[i] < 70:
        continue
    print("%d 번째 학생은 합격입니다. 축하합니다." % (i + 1))
Python
1 번째 학생은 합격입니다. 축하합니다.
3 번째 학생은 합격입니다. 축하합니다.
4 번째 학생은 합격입니다. 축하합니다.

실행해보면 동일한 결과를 보여주는 걸 확인 할 수 있습니다.
위에서 사용 된 len 함수는 리스트 와 함께 사용되면서 리스트 안의 요소의 갯수가 몇개인지를 확인하는 함수가 되었습니다. 따라서 range(len(j)) 의 경우는 range(5) 가 되는 것 입니다.
i 변수에 0 부터 4 까지의 숫자가 대입이 되고, j[i] 의 경우에는 차례대로 80, 30, 75, 90, 65 의 점수를 가지게 됩니다.

파이썬 for 문과 range 함수를 이용한 구구단

for 문과 range 함수를 이용하면 간단하게 구구단 코드를 작성 할 수 있습니다.

Python
>>> for a in range(2, 10):      # 1번째 for 문
...     for b in range(1, 10):  # 2번째 for 문
...         print(a * b, end=" ")
...     print(' ')
...
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81

위의 코드를 살펴보면 for문이 2번이 나옵니다. 1번째 for 문에서는 2 부터 9 까지의 숫자를 (range(2, 10)) 문장을 통해 a 변수에 차례로 대입을 하고 a 가 처음 2 일 때 2번째 for 문을 만납니다. 2번째 for 문에서는 1 부터 9 까지의 숫자를 (range(1, 10))을 통해 j 에 대입되게 되면서 그 다음 문장인 print(a * b) 문장을 수행하게 됩니다.
결국 a 가 2 일 때 2*1, 2*2, 2*3, … 2*9 가 차례대로 수행이 되며 출력이 되고, a 가 3 일 때 3*1, 3*2… 이런식으로 반복되서 출력이 되게 됩니다.
print(a * b, end=” “) 처럼 print 함수에 end 파라미터를 설정한 이유는 해당 결과를 출력할 때 다음줄로 넘기지 않고 그 줄에서 계속 출력해 주기 위해서 입니다.
이는 print 문의 end 매개 변수에 기본적으로 줄바꿈 문자인 ‘\n’ 이 설정 되어 있기 때문입니다.
그리고 print(‘ ‘)는 2단, 3단…. 을 구분하기 위해서 사용되었습니다.
두번째 for 문이 끝나면 다음 줄부터 출력을 이어나가게 하는 용도입니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
23. 파이썬 for 문과 range 함수

22. 파이썬 반복문 for 문

22. 파이썬 반복문 for 문

파이썬에는 반복문이 기존에 배웠던 while 문 외에도 for 문 이 있습니다.

파이썬 반복문 for 문 의 경우에는 while 문과 비슷하긴 하지만 그에 비해 문장 구조가 한눈에 쏙 들어온다는 장점이 있습니다.

반복문 for 문 의 기본 구조

for 문의 기본 구조 입니다

Python
for 변수 in 리스트(또는 문자열이나 튜플):
    수행할 문장 1
    수행할 문장 2
    ...

for문은 리스트, 튜플, 문자열의 첫번째 요소부터 마지막 요소까지 변수에 차례대로 대입되면서 다음에 나오는 수행할 문장 1, 수행할 문장 2,… 등이 수행됩니다.

파이썬 for 문 예제

1. 전형적 for 문

Python
>>> list_01 = ['one day', 'two day', 'three day']
>>> for i in list_01:
...     print(i)
...
one day
two day
three day

리스트 list_01 의 요소 [‘one day’, ‘two day’, ‘three day’] 의 첫번째 요소인 ‘one day’가 제일 먼저 i 변수에 대입됩니다. 그리고 print(i) 를 통해 one day 가 출력 됩니다. 다음으로 두번째 요소인 ‘two day’ 가 i 변수에 입력 됩고 two day 가 출력 됩니다. 이렇게 반복해서 마지막 요소인 three day 까지 출력되게 됩니다.

2. 다양한 파이썬 for 문

Python
>>> l = [(2, 4), (6, 8), (10, 12)]
>>> for (a, b) in l:
...     print(a + b)
...
6
14
22

위 예제에서는 l 리스트의 요솟값 들이 튜플이기 때문에 각 요소들이 자동적으로 (a, b) 변수에 대입 되어서 2, 4의 합, 6, 8 의 합, 10, 12의 합 결과들이 출력 되게 됩니다.

3. 파이썬 for 문의 응용

아래와 같은 문제가 있습니다.

총 5명의 학생이 있고, 시험을 봐서 시험 점수가 70 점 이상이면 합격, 아니면 불합격 이라고 판단하고 합격인지 불합격인지 판단해서 결과를 출력해보세요
5명의 시험 점수는 아래와 같습니다.
j = [80, 75, 90, 65, 30]

첫 번째 학생은 80 점이고 마지막 학생은 30 점 입니다.
프로그래밍을 해보면 아래와 같습니다.

Python
# mark_01.py
j = [80, 75, 90, 65, 30]
n = 0
for i in j:
    n = n + 1
    if i >= 70:
        print("%d 번째 학생은 합격입니다." % n)
    else:
        print("%d 번째 학생은 불합격입니다." % n)

첫번째 부터 다섯번째 학생까지 번호를 부여하기 위해 n 변수를 사용했습니다.
j 리스트에서 차례로 점수를 꺼내서 i 변수에 대입하고 for 문 안의 문장들을 수행하게 됩니다.
for 문이 한 번씩 수행 될때 마다 n 변수는 1 씩 증가합니다.
실행을 해보면 i 변수가 70 이상 일 때 합격했다는 문장을 출력하고 그렇지 않으면 불합격 했다는 문장을 출력하게 됩니다.

Python
1 번째 학생은 합격입니다.
2 번째 학생은 합격입니다.
3 번째 학생은 합격입니다.
4 번째 학생은 불합격입니다.
5 번째 학생은 불합격입니다.

for 문과 continue

이전 while 문에서도 continue 문이 있었는데 for 문에서도 사용이 가능합니다.
while 문과 마찬가지로 for 문 안의 문장을 수행하다가 continue 문을 만나게 되면 for 문의 처음으로 돌아가게 됩니다.

직전에 했던 for 문 예문을 활용해서 70 점 이상인 사람에게만 축하한다는 문장을 출력하고 나머지 사람은 불합격 문장을 출력하지 않고 그냥 지나가는 프로그램을 작성해 보겠습니다.

Python
# mark_02.py
j = [80, 75, 90, 65, 30]
n = 0
for i in j:
    n = n + 1
    if i < 70:
        continue
    print("%d 번째 학생은 합격입니다. 축하합니다." % n)

실행 결과는 다음과 같습니다

Python
1 번째 학생은 합격입니다. 축하합니다.
2 번째 학생은 합격입니다. 축하합니다.
3 번째 학생은 합격입니다. 축하합니다.

점수가 70 보다 작을 경우에 참이 되어 첫번째 부터 세번째 학생은 축하한다는 문장을 출력하고 나머지 학생의 경우에는 for 문의 처음으로 돌아가므로 아무 문장도 출력하지 않게 됩니다.

이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

22. 파이썬 반복문 for 문

21. 파이썬 반복문 while 두번째 시간

21. 파이썬 반복문 while 두번째 시간

지난 시간에는 파이썬 반복문 while 의 기본 구조와 while 문 만드는 것을 공부해 봤습니다.

이번 시간에는 파이썬 반복문 while 두번째 시간을 가져보겠습니다

while 문 강제로 빠져나가기

이전 시간에 공부했던것 처럼 while 문은 조건문이 참일 동안에 계속해서 while 문안의 내용을 반복적으로 수행합니다.
그런데 while 문을 강제로 빠져나가야 하는 경우도 있을 수 있습니다.
커피 자판기를 생각해 보면 자판기 안에 커피가 충분히 있을 때에는
동전을 넣었을때 커피가 나오는데 커피가 만약 떨어졌다면
자판기가 제대로 동작을 하지 않는것이기에
커피가 얼마나 남았는가를 항상 검사하고
만약 커피가 떨어졌다면 판매를 멈춰야 할것 입니다.
그리고 판매가 중지되었다는걸 사용자에게도 알려주어야 겠습니다.
이런식으로 판매를 강제로 멈추게 하는것이 break 문입니다.

21. 파이썬 반복문 while 두번째 시간
이미지 출처:점프 투 파이썬

위의 커피자판기 이야기를 코드로 표현해 보겠습니다.

Python
>>> coffee = 10
>>> money = 300
>>> while money:
...     print("돈을 받았습니다. 커피를 줍니다.")
...     coffee = coffee - 1
...     print("남은 커피는 %d 개 입니다." % coffee)
...     if coffee == 0:
...         print("커피가 다 떨어졌네요. 판매를 중단 합니다.")
...         break
...

위 의 코드는 money 가 300 으로 고정 되어 있습니다. 고로 항상 참이므로 무한 루프를 타게 되어있습니다.
while 문이 한번 수행 할때 마다 coffee 변수는 1 씩 줄어들게 됩니다.
coffee 가 0 이 되면 if 조건문에 의해서 커피가 다 떨어졌다고 판매를 중단한다는 메세지를 출력하고
break 문을 만나 while 문을 빠져나가게 됩니다.

실제 자판기의 작동 과정과 비슷하게 만들어본다면 다음과 같을 겁니다
아래 예는 대화형 인터프리터 가 아닌 비주얼스튜디오코드 편집기 창에서 실행을 해보겠습니다

Python
# coffee.py

coffee = 10
while True:
    money = int(input("돈을 넣어 주세요: "))
    if money == 300:
        print("커피를 줍니다.")
        coffee = coffee - 1
    elif money > 300:
        print("거스름 돈 %d 를 반환하고 커피를 줍니다." % (money - 300))
        coffee = coffee - 1
    else:
        print("돈을 다시 돌려주고 커피는 주지 않습니다.")
        print("남은 커피의 양은 %d 개 입니다." % coffee)
    if coffee == 0:
        print("커피가 다 떨어졌습니다. 판매를 중지 하겠습니다.")
        break

위의 코드를 실행하면

Python
돈을 넣어 주세요: 

라고 입력을 할 수 있게 나오고
입력 란에 숫자를 입력해 보면 결과를 확인 할 수 있습니다.

Python
돈을 넣어 주세요: 300
커피를 줍니다.
돈을 넣어 주세요: 500
거스름 돈 200 를 반환하고 커피를 줍니다.
돈을 넣어 주세요: 300
커피를 줍니다.
돈을 넣어 주세요: 1000
거스름 돈 700 를 반환하고 커피를 줍니다.
돈을 넣어 주세요:

while 문의 처음으로 돌아가기

while 문을 수행하다가 조건문이 안 맞아서 빠져나가거나 break 문으로 강제로 빠져나가는 경우 외에도
while 문의 처음 조건문으로 다시 돌아가야 하는 경우도 있을것 입니다.
이럴때 사용되는 것이 continue 문 입니다.

1 부터 10 까지의 숫자 중에서 홀수만 출력하기

1 부터 10 까지의 숫자가 있고 이중에서 홀수만 출력을 하려할때 while 문을 사용해서 작성해 보면서 알아보겠습니다.

Python
>>> a = 0
>>> while a < 10:
...     a = a + 1
...     if a % 2 == 0: continue
...     print(a)
...
1
3
5
7
9

위 의 코드를 살펴보면 a 가 10 보다 작은 동안 a 는 계속 1만큼씩 증가 하게 됩니다.
그리고 if a % 2 == 0 문장에 의해 a 를 2 로 나눈 나머지 값이 0 이 되는 경우에 참이 되며 이 경우가 짝수인 경우이니 continue 문을 통해 처음 조건문인 while a < 10 으로 가게 됩니다.
따라서 a 가 짝수일 경우에는 print(a) 문장이 수행이 안되는 것입니다.

무한 루프(Loop)

무한 루프란 말 그대로 무한하게 계속 반복 된다는 것입니다.
파이썬에서 사용하는 무한 루프의 기본 형태입니다.

Python
while True:
    수행할 문장 1
    수행할 문장 2
    ...

while 문의 조건문이 True 이면 항상 참이라는 얘기입니다. 따라서 위의 while 문은 무한적으로 반복되게 됩니다.

파이썬 반복문 while 의 무한 루프의 예를 보겠습니다.

Python
>>> while True:
...     print("무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.")
...
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
무한 루프 입니다. Ctrl + c 로 빠져나갈 수 있습니다.
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
KeyboardInterrupt

Ctrl + c 를 안 누른다면 계속적으로 무한하게 실행 될 것 입니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

20. 파이썬 반복문 while 에 대해 알아보자

20. 파이썬 반복문 while 에 대해 알아보자

지난 시간까지 파이썬의 조건문에 대해 공부했었습니다

파이썬 반복문 while

이번 포스팅에서는 파이썬 반복문 중 while 문에 대해 공부해 보도록 하겠습니다

while 문의 기본 구조

파이썬 프로그램을 짤 때 동일한 작업을 여러번 반복해서 수행을 해야 한다면 반복문을 사용하면 됩니다
반복문 중 먼저 while 문에 대해 알아보겠습니다.

아래는 while 문의 기본 구조입니다.

while 조건문:
    수행할 문장 1
    수행할 문장 2
    수행할 문장 3
    ...

while 문 에서는 조건문이 참인 동안에 수행할 문장 들을 반복해서 수행하게 됩니다.
다음은 ‘열 번 찍어 안 넘어 가는 나무 없다’ 라는 속담을 파이썬 프로그램으로 구현해 본 것입니다.

Python
>>> t = 0
>>> while t < 10:
...    t = t + 1
...    print("나무를 %d 번 찍었습니다." % t)
...    if t == 10:
...        print("나무가 넘어 갑니다")
...
나무를 1 번 찍었습니다.
나무를 2 번 찍었습니다.
나무를 3 번 찍었습니다.
나무를 4 번 찍었습니다.
나무를 5 번 찍었습니다.
나무를 6 번 찍었습니다.
나무를 7 번 찍었습니다.
나무를 8 번 찍었습니다.
나무를 9 번 찍었습니다.
나무를 10 번 찍었습니다.
나무가 넘어 갑니다

위 코드에서 while 문의 조건문은 t < 10 입니다. t 라는 변수의 값이 10 보다 작은 동안에 while 문안에 포함된 print 문과 if 문 을 반복해서 수행하게 됩니다.
먼저 t 가 10 보다 작은 것이 확인이 되면 t 값을 1씩 증가 시킵니다.
그리고 t 만큼 나무를 찍었다는 걸 출력해줍니다.
그렇게 t 값이 10 이 되면 나무가 넘어간다는 메세지를 출력하고
t 값이 10 이 넘어가게 되면 조건문이 거짓이 되므로 while 반복 문을 빠져 나가게 됩니다.

t = t + 1 이란 표현식은 자주 사용되는 기법인데 t += 1 이라고 표시 하기도 합니다.

실제 while 문이 반복되는 과정을 순서대로 정리하면 다음과 같습니다

t(변수) 조건문 조건판단 수행하는 문장 while 문
———————————————————————————————
0 0 < 10 참 나무를 1 번 찍었습니다. 반복
1 1 < 10 참 나무를 2 번 찍었습니다. 반복
2 2 < 10 참 나무를 3 번 찍었습니다. 반복
3 3 < 10 참 나무를 4 번 찍었습니다. 반복
4 4 < 10 참 나무를 5 번 찍었습니다. 반복
5 5 < 10 참 나무를 6 번 찍었습니다. 반복
6 6 < 10 참 나무를 7 번 찍었습니다. 반복
7 7 < 10 참 나무를 8 번 찍었습니다. 반복
8 8 < 10 참 나무를 9 번 찍었습니다. 반복
9 9 < 10 참 나무를 10 번 찍었습니다.나무가 넘어갑니다 반복
10 10 < 10 거짓 종료

위 같은 과정을 몇 줄의 while 문으로 만든겁니다.
만약 10 번이 아니라 100 번 또는 그 이상의 작업을 반복해야 한다고 하면 엄청난 효율이 나올 것입니다.

while 문 만들기

여러가지 선택지 중에서 하나를 선택해서 입력 받게끔 하는 예제를 만들어 보겠습니다.
먼저 여러 줄 짜리 prompt 를 만들어 보겠습니다.

Python
>>> prompt = """
... 1. Add
... 2. Del
... 3. List
... 4. Quit
...
... Enter number: """
>>> 

이제 n 이라는 변수에 0 을 먼저 대입해 줍니다. 이렇게 변수에 0 을 먼저 대입해 주는 방식으로 설정을 해놓지 않으면 다음에 나오는 while 문에서 조건문에 변수가 존재하지 않는다는 오류가 발생하게 됩니다.

Python
>>> n = 0
>>> while n != 4:
...     print(prompt)
...     n = int(input())
...
Python
1. Add
2. Del
3. List
4. Quit

Enter number :

위의 코드를 살펴보면 변수 n 이 4 가 아닌 동안 prompt 변수 안에 저장된 값들을 출력하고
사용자로부터 번호를 입력 받습니다.

Python
Enter number :
1

1. Add
2. Del
3. List
4. Quit

Enter number :
2

1. Add
2. Del
3. List
4. Quit

Enter number :
4
>>>

1 을 입력하면 4 가 아니기 때문에 prompt 변수 안의 값들을 출력하고
2 를 입력해도 역시 4 가 아니기 때문에 동일한 출력을 이어 주다가
4 를 입력하면 조건문이 거짓이 되어 while 문을 빠져나가게 됩니다.

다음 포스팅에서 while 문에 대해서 더 알아보도록 하겠습니다

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
20. 파이썬 반복문 while 에 대해 알아보자

19. 파이썬 조건문 두번째 시간~

19. 파이썬 조건문 두번째 시간~

지난 18회 파이썬 포스팅에 이어 파이썬 조건문 두번째 시간을 가져보겠습니다

조건문에서 아무것도 하지 않게 설정하기

조건문을 참이나 거짓에 따라 실행하도록 정의 하다 보면 어떤 경우에는 아무것도 하지 않게 설정해야 하는 경우도 생길 수 있습니다.
다음 예를 보면

“주머니에 돈이 있으면 가만히 있고, 주머니에 돈이 없으면 카드를 꺼내라”

위처럼 가만히 있어야 하는 경우를 표현하기 위해서 사용하는 것이 pass 명령입니다

Python
>>> pocket = ['paper', 'phone', 'money']
>>> if 'money' in pocket:
...     pass
... else:
...     print("카드를 꺼내세요")
...
>>>

위 코드를 보면 pocket 리스트 안에 money 라는 문자열이 있기 때문에 if 의 다음 문장인 pass 가 수행되지만 아무것도 보여주지 않습니다.

다양한 조건 판단을 위한 elif

if 와 else 만을 사용한다면 단순 이거 아니면 저거 라는 식으로 조건에 한계가 발생합니다. 다양한 조건 판단을 하려는데 if 와 else 만 사용한다면 조건문 자체가 상당히 길어질 수 밖에 없습니다.

“주머니에 현금이 있으면 택시를 타고, 주머니에 현금은 없지만 카드가 있다면 택시를 타고, 현금도 없고 카드도 없다면 걸어 가세요.”

위 예문을 보면 조건을 판단하는 부분이 두 군데 입니다. 현금이 있는지 판단을 하고 주머니에 현금이 없지만 카드가 있는지 판단을 해야 합니다.
위 예문을 if 와 else 만으로 구현하면 다음처럼 할 수 있을 겁니다

Python
>>> pocket = ['paper', 'phone']
>>> card = True
>>> if 'money' in pocket:
...     print("택시를 타고 가세요")
... else:
...     if card:
...         print("택시를 타고 가세요")
...     else:
...         print("그냥 걸어 가세요")
...
택시를 타고 가세요

if 문 안에 else 가 있고 그 아래에 또 다시 if ~ else 문을 쓰게 됩니다.
이런 산만하고 복잡한 느낌의 if ~ else 문을 해결하기 위해 elif 라는 것이 파이썬에는 존재합니다.
elif 를 사용하여 위의 코드를 변경해 보겠습니다.

Python
>>> pocket = ['paper', 'phone']
>>> card = True
>>> if 'money' in pocket:
...     print("택시를 타고 가세요")
... elif card:
...     print("택시를 타고 가세요")
... else:
...     print("그냥 걸어 가세요")
...
택시를 타고 가세요

위의 새로 생성한 코드 처럼 elif 는 이전 조건문이 거짓일 경우 수행됩니다.
if, elif, else 를 모두 사용한다면 아래 구조처럼 됩니다

Python
if 조건문 1:
    수행할 문장 1
    수행할 문장 2
    ...
elif 조건문 2
    수행할 문장 1
    수행할 문장 2
    ...
elif 조건문 2
    수행할 문장 1
    수행할 문장 2
    ...
...
else:
    수행할 문장 1
    수행할 문장 2
    ...

if 조건문에서 elif 는 개수에 제한없이 사용이 가능합니다.

if 조건문 한 줄로 작성하기

이전에 작성했던 pass 명령을 사용한 예를 보면 if 문 다음에 한 줄의 문장이 수행이 되고, else 문 다음에도 한 줄의 문장만 수행이 됩니다

Python
>>> if 'money' in pocket:
...     pass
... else:
...     print("카드를 꺼내세요")

이런 경우에는 조금 더 코드를 간단하게 만들 수가 있습니다.

Python
>>> pocket = ['paper', 'phone', 'money']
>>> if 'money' in pocket: pass
... else: print("카드를 꺼내세요")
...

원래 if 문에서는 한 줄 하고 다음 줄 pass, 그리고 다음 줄 else 하고 다음 한 줄 문장을 작성했다면 수정한 코드에서는 if 문 콜론(:) 뒤 수행할 문장 적은 거 한 줄, else 문 콜론(:) 뒤에 수행할 문장 적은 거 한 줄 로 두줄의 문장으로 코드가 종료가 되었습니다.

조건부 표현식

Python
>>> if jumsoo >= 70:
...     m = "success"
... else:
...     m = 'failure"

위의 코드는 jumsoo 가 70 점 이상일 경우 m 이라는 변수에 success 라는 문자열을 입력하고 아닐 경우에는 failure 라는 문자열을 입력하는 코드입니다.
위 코드를 파이썬 조건부 표현식(conditional expression)을 사용해서 다음 처럼 간단하게 변경할 수 있습니다.

Python
>>> m = "success" if jumsoo >= 70 else "failure"

조건부 표현식 은 다음처럼 정의 할 수 있습니다

변수 = 조건문이_참일_경우의_값 if 조건문 else 조건문이_거짓일_경우의_값

이처럼 조건부 표현식은 가독성이 유리하고 한 줄로 작성 할 수 있어서 활용성이 좋습니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

19. 파이썬 조건문 두번째 시간~

18. 파이썬 조건문 다 아시나요?

18. 파이썬 조건문 다 아시나요?

파이썬에 대해 꾸준히 공부하면서 포스팅을 이어 나가는 중입니다.
이번 제목이 ’18. 파이썬 조건문 다 아시나요?’ 인데 오해 없으시길 바랍니다.
욕하는 제목이 아니라 순번이 18 번째 라서 그리 된 것입니다.

파이썬 조건문 이란?

앞서 살펴본 if 조건문에서 조건문 이란건 참과 거짓을 판별하는 문장임을 확인했습니다.
택시를 타냐 마냐 하는 예문에서 조건문은 money 가 됩니다.

Python
>>> money = True
>>> if money:

파이썬 비교연산자

파이썬 조건문에 비교연산자를 사용하는 방법에 대해 살펴보겠습니다.
비교연산자는 <, >, ==, !=, >=, <= 가 있습니다.

  • a < b a 가 b 보다 작다
  • a > b a 가 b 보다 크다
  • a == b a 와 b 는 같다
  • a != b a 와 b 는 같지 않다
  • a >= b a 는 b 보다 크거나 같다
  • a <= b a 는 b 보다 작거나 같다

위의 비교연산자를 사용하는 방법은 아래와 같습니다.

Python
>>> a = 3
>>> b = 2
>>> a > b
True

a 에 3 을, b 에 2 를 대입한 후 a > b 라는 조건문을 수행하면 True 를 반환합니다.
당연히 3 이 2 보다 크므로 참이기 때문입니다.

Python
>>> a < b
False
>>> a == b
False

3 이 2보다 큰데 3 < 2 라고 조건문을 수행하면 거짓이기 때문에 False 를 반환하고
마찬가지로 3 == 2 라고 하면 3과 2는 같지 않기 때문에 False 를 반환합니다.

Python
>>> a != b
True

3 과 2 는 같지 않기 때문에 참으로 True를 반환하게 됩니다.
지난번 공부 할때 는 money = True 라고 했었는데
이번에는 ‘만약 돈이 4000원 이상이 있으면 택시를 타고 그렇지 않으면 걸어 가세요.’ 라는 문장으로 프로그래밍을 해보겠습니다

Python
>>> money = 3000
>>> if money >= 4000:
...     print("택시를 타고 가세요")
... else:
...     print("그냥 걸어 가세요")
...
그냥 걸어 가세요

위 처럼 money >= 4000 이라는 조건문이 거짓이기에 else 문 다음 문장을 수행해서 ‘그냥 걸어 가세요’ 라는 문장을 출력하게 됩니다.

and, or, not

조건을 판단하기 위해서 필요한 다른 연산자로 and, or, not 이 있습니다.

  • a or b a 와 b 둘 중에 하나만 참이어도 참
  • a and b a 와 b 둘 모두 참이어야 참
  • not a a 가 거짓이면 참

예를 통해서 사용법을 알아보겠습니다

“돈이 4000 원 이상 있거나 또는 카드가 있으면 택시를 타고 그렇지 않으면 걸어 가세요.”

Python
>>> money = 3000
>>> card = True
>>> if money >= 4000 or card:
...     print("택시를 타고 가세요")
... else:
...     print("그냥 걸어 가세요")
...
택시를 타고 가세요

위 예를 보면 money 는 3000 입니다. 그리고 card 는 True 입니다.
money >= 4000 or card 이기 때문에 둘 중 하나의 조건만 참이면 참이 됩니다.
따라서 if 문 다음 문장이 ‘택시를 타고 가세요’ 가 출력이 되는 것 입니다.

in, not in

다른 프로그래밍 언어에서는 쉽게 볼 수 없는 조건문입니다.

  • a in 리스트 a not in 리스트
  • a in 튜플 a not in 튜플
  • a in 문자열 a not in 문자열

영어에서 in 의 의미는 ~ 안에 라고 해석됩니다

Python
>>> 2 in [2, 4, 6]
True
>>> 'k' not in 'summer'
True

첫 번째는 리스트 [2, 4, 6] 안에 2 라는 숫자가 있는 지를 확인하는 조건문입니다. 2 가 리스트 안에 존재하므로 True 가 리턴 됩니다.
두 번째는 k 가 summer 안에 없는가 확인하는 조건문입니다. k 가 summer 에 없으므로 역시 참 True 가 리턴 됩니다.
리스트, 문자열, 튜플 다 마찬가지로 적용이 됩니다.

그럼 앞에 택시 예제에 대입해 보겠습니다.

“만약 주머니에 돈이 있으면 택시를 타고, 없으면 걸어 가세요”

Python
>>> pocket = ['paper', 'phone', 'money']
>>> if 'money' in pocket:
...     print("택시를 타고 가세요")
... else:
...     print("그냥 걸어 가세요")
...
택시를 타고 가세요

[‘paper’, ‘phone’, ‘money’] 리스트 안에 ‘money’ 가 존재하므로 참이 됩니다.
따라서 if 바로 뒤 문장이 출력 되게 됩니다.

이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

18. 파이썬 조건문 다 아시나요

17. 파이썬 제어문에 대해 알아보자

17. 파이썬 제어문에 대해 알아보자

지난 시간까지는 파이썬의 자료형에 대해 알아보고 연습문제를 풀어봤습니다

파이썬 제어문에는 if, while, for 등 이 존재합니다.
프로그래밍을 집을 짓는 거와 비교해 보자면 집을 짓기 위해 필요한 나무, 돌, 시멘트 등의 재료들은 자료형이 되는 것이고, 집의 뼈대를 만드는 철근 같은 것들이 제어문에 해당한다고 보시면 됩니다.
이제부터 자료형을 바탕으로 제어문을 이용해서 프로그램의 구조를 만들어 보는 것을 공부해 보겠습니다.

파이썬 조건문 if

파이썬 제어문 중 조건문 if는 조건을 판단해서 조건에 맞는 상황을 진행하게끔 하는 명령입니다.
다음의 상상을 해보세요

“돈이 있으면 택시를 타고, 돈이 없으면 걸어 간다.”

위 상상을 파이썬으로 표현하면 다음과 같을 수 있습니다

Python
>>> money = True
>>> if money:
...    print("택시를 타고 가세요")
... else:
...    print("걸어 가세요")
...
택시를 타고 가세요

money 라는 변수에 True 를 입력했기 때문에 money 는 참이 됩니다.
따라서 if 문 다음 문장인 “택시를 타고 가세요” 가 출력이 되게 됩니다.

파이썬 if 문의 기본 구조

if 문의 기본 구조 입니다. if 와 else 를 사용합니다.

Python
if 조건문:
   수행할 문장 1
   수행할 문장 2
   ...
 else:
    수행할 문장 A
    수행할 문장 B
    ...

조건문을 파악해서 참이면 if 다음에 있는 수행할 문장 1, 2 를 차례로 수행을 하고
조건문이 거짓이라면 else 다음에 있는 수행할 문장 A, B 를 차례로 수행을 하게 됩니다.
else 문은 if 문 없이 독립적으로는 사용 될 수 없습니다.

파이썬 들여쓰기

if 문을 구성할 때는 if 조건문: 바로 아래 문장에서 부터는 if 문에 속하는 모든 문장에 들여쓰기(identation)를 적용해야만 합니다. 위 예에서 처럼 ‘수행할 문장 1’, ‘수행할 문장 2’를 들여쓰기 해주었습니다.
파이썬에서는 들여쓰기는 기본 문법의 하나로 중요합니다.
들여쓰기가 제대로 되어있지 않다면 파이썬에서는 오류가 발생하게 됩니다.

위에서 진행했던 코드에서 들여쓰기를 하지 않고 진행해 봤습니다.

Python
>>> money = True
>>> if money:
... print("택시를 타고 가세요")
  File "<stdin>", line 2
    print("택시를 타고 가세요")
    ^
IndentationError: expected an indented block after 'if' statement on line 1

들여쓰기를 해야 한다는 오류가 발생했습니다.

다음과 같은 경우에도 오류가 발생하게 됩니다

Python
>>> money = True
>>> if money:
...    print("택시를 ")
...    print("타고 ")
...       print("가세요")
  File "<stdin>", line 4
    print("가세요")
IndentationError: unexpected indent

위 오류가 나온 것을 살펴보면 알 수 있겠지만 파이썬에서 들여쓰기의 깊이는 동일하게 진행을 해야 합니다.

이런 들여쓰기 규칙 때문에 들여쓰기를 공백(space bar) 으로 하냐, 탭(tab) 으로 하냐 의견이 분분한 경우가 생기기도 합니다.
이런 의견이 갈리는 경우에도 공통된 부분은 공백과 탭을 혼용으로 쓰지는 말자는 것입니다.
대부분의 요즘 에디터에서는 탭을 자동으로 공백으로 바꿔 주는 기능이 포함되어 있기도 합니다.
공백과 탭을 혼용으로 사용한다면 눈에 보이지 않기 때문에 나중에 오류가 발생할 수 도 있습니다.
파이썬 커뮤니티에서 추천하는 들여쓰기는 공백 4개 인 듯 합니다.

파이썬 조건문 뒤 콜론(:)

if 조건문 뒤에는 무조건 콜론(:)을 사용합니다.
이렇게 콜론(:)을 사용하는 것도 파이썬의 기본 문법입니다.
if 조건문 뿐만이 아니라 while, for, def, class 등 에서도 문장의 끝에는 콜론이 항상 들어갑니다.
이런 식으로 if 등 에서 문장의 끝에 콜론(:)을 사용하면 엔터를 쳤을 경우 다음 문장에는 자동으로 들여쓰기를 진행하게 됩니다. 그리고 이 들여쓰기를 통해 if 등의 문장들을 처리하는 것입니다.
다른 언어들의 경우 { } 기호로 감싸는 경우가 있습니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
17. 파이썬 제어문에 대해 알아보자