Notice
Recent Posts
Recent Comments
Link
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Tags
more
Archives
Today
Total
관리 메뉴

민수야, 너도 할 수 있어

Python 공부 (9) - 제어문(if) 본문

언어/python

Python 공부 (9) - 제어문(if)

devpola 2020. 2. 15. 08:28

제어문 - if

    앞으로, 이 때까지 배운 자료형들을 바탕으로 프로그램의 흐름을 제어하는 조건문(if)과 반복문(while, for)에 대해 공부할것이다. 이번 포스팅에서는 if문을 다루어볼것이다.

 

if문

    프로그래밍을 할 때에도 '조건'이라는 개념이 필요하다. 예를 들면, ~라면 ~를 실행해라 등이 있다. 이를 프로그래밍에서 구현해줄 수 있게 해주는 것이 if문이다.

  • if문 사용법
num = 1

if num == 1:
    print('hello')
    num += 1;
else:
    print('world')

    if문은 else와 함께 사용할 수 있다. 위 예제처럼 if 조건문: 아래에 들여쓰기로 실행할 문장들을 쓰고, else: 아래에도 문장들을 쓰면된다.
    위 코드가 말하는 바는 if num==1:(만약에, num이라는 변수가 1이라는 값을 가지고 있다면) 아래의 문장들을 실행하라. else:(그렇지 않다면,(num이라는 변수가 1이라는 값이 아니라면)) 마찬가지로 아래의 문장들을 실행하라는 것이다.
    정리하자면, if문 오른쪽에 위치하는 조건문이 반환하는 값이 True(참)이면 if: 아래의 문장들을, False(거짓)이면 else: 아래의 문장들을 실행한다. 이를 바탕으로 위 예제의 결과는 'hello'를 출력하고 num 변수가 2라는 정수형 객체를 가리키게된다. 또한, else문은 if문의 조건문이 거짓을 반환할 경우만 실행하기 때문에, 독립적으로 사용할 수 없다.

    참고로, 들여쓰기를 하는 이유는 C나 JAVA와 같이 문장 끝마다 ;(세미콜론)을 붙여주는 언어와 달리 python은 문장과 문장을 구분하는 기준이 들여쓰기이기 때문이다.

 

조건문에 올 수 있는 연산자

    아래에서 조건문에 올 수 있는 연산자들을 볼것이다. 각각의 경우에서 True 또는 False를 반환한다.

  1. 자료형

    위와 같이 각각의 자료형에서 값이 없는 상태는 False를 반환한다. 숫자형에서는 0이 False를, 0이 아닌 모든 숫자형이 다 True를 반환하게 된다. 자료형들을 조건문에서 다음과 같이 사용할 수 있다.

a = ""

if a:
    print(a)
else:
    print("문자열이 비어있습니다.")

 

  1. 비교 연산자

    각각의 조건문이 사실일 경우 True를, 거짓일 경우 False를 반환하게 된다. 비교 연산자를 조건문에서 아래와 같이 사용할 수 있다.

score = 80

if score>70:
    print("Pass")
else:
    print("Fail")

 

  1. 논리 연산자 (and, or, not)

    andor연산자는 이항 연산자로 양쪽에 두개의 조건문이 와야한다. and연산자의 경우 양쪽의 조건문 모두 True를 반환할 경우 최종적으로 True를 반환한다. 반면에, or연산자는 둘 중 하나만 True를 반환하면 최종적으로 True를 반환하고 양쪽 모두 False를 반환할 경우에만 False를 반환한다.
    마지막으로, not연산자는 단항 연산자로 하나의 조건문앞에 위치하게 되는데, not연산자 뒤에 오는 조건문이 반환하는 값의 반대 값을 반환한다. 논리 연산자는 아래와 같이 사용할 수 있다.

a = 3
b = 2

if a>b and b==2:
    print("두 문장 모두 참 입니다.")
else:
    print("두 문장 모두 참인 경우가 아닙니다.")

 

  1. in 연산자

    in은 ~안에라는 뜻을 가지고 있다. 이를 생각하면 쉽게 사용할 수 있다.
in 연산자 앞에는 요소 값이 오고, 뒤에는 리스트, 튜플, 문자열이 올 수 있다. 해당 요소 값이 리스트, 튜플, 문자열 내에 존재 하면 True를, 하지 않으면 False를 반환한다.
not in이라는 연산자도 사용할 수 있다. 이는, in연산자와 반대의 의미를 가진다. 아래와 같이 조건문으로 사용할 수 있다.

l = [1,2,3]

if 2 in l:
    print("리스트 l 안에 2가 존재합니다.")
else:
    print("리스트 l 안에 2가 존재하지 않습니다.")

if 2 not in l:
    print("리스트 l 안에 2가 존재하지 않습니다.")
else:
    print("리스트 l 안에 2가 존재합니다.")

 

pass문

    설정한 조건에 부합하여도 아무 결과를 출력하고 싶지 않을 때, 사용할 수 있는 것이 pass문이다. 실행할 문장에 pass문을 사용하면, 아무 결과도 반환하지 않고 조건문이 끝난다. pass문은 아래와 같이 사용할 수 있다.

a = 1
if a==1:
    pass    #아무런 결과가 일어나지 않고 조건문에서 빠져나간다.
else:
    print("a가 1이 아닙니다.")

 

elif문

    항상 하나의 조건문을 두고 성립할 경우와, 성립하지 않을 경우로 나눌 수는 없다. 이런 경우, 여러가지 조건들을 중첩시킬 수 있다. 아래의 예제를 보자.

score = 80
grade = ''

if score >= 50:
    grade = 'C'
    if score >= 70:
        grade = 'B'
        if score >= 80:
            grade = 'A'
else:
    grade = 'D'

print(grade)    #A

    위와 같이 여러개의 조건문을 필요로 할 때에 if문들을 중첩시킬 수 있다. 하지만, 조건이 많아질 경우, 가독성이 많이 떨어진다. 이와 같은 경우 사용하는 것이 elif문인데, 이는 C 언어의 else if문과 같은 의미를 가진다. elif문도 if문과 마찬가지로 오른쪽에 조건문을 두고 아래에 실행할 문장들을 둘 수 있다. 위 예제를 아래와 같이 바꿀 수 있다.

score = 80
grade = ''

if score >= 50:
    grade = 'C'
elif score >= 70:
    grade = 'B'
elif score >= 80:
    grade = 'A'
else:
    grade = 'D'

print(grade)    #A

    if, elif, else 문들을 위에서 부터 차례대로 보면서 중간에 True를 반환하는 조건문이 있다면, 그 아래에 있는 문장들을 실행하고 모든 if, elif, else 문을 종료한다. 그리고 위의 예제와 같이 elif문은 개수의 제한없이 사용할 수 있다.

 

    이번에는 제어문 중, if문을 공부해봤다. 다음에는 제어문 중, while문에 대해 포스팅을 할것이다. 참고로, 저자는 공부자료로 박응용 저자의 점프 투 파이썬 책을 이용하고 있다. 이는 구글에서도 무료로 볼 수 있으니 공부에 참고하길 바란다.