brunch

You can make anything
by writing

C.S.Lewis

by 아무나 Jul 24. 2019

Python - 5. 코드의 꽃 : if

*Udacity - Intro to Computer Science 를 따라가고 있습니다.

https://classroom.udacity.com/courses/cs101


0. 다음 목표 - 크롤링된 링크까지 크롤링하는 크롤러를 만들어보자


앞에서 기초적인 크롤링 프로그램을 만들어보았다. 아직은 단일 페이지의 주소를 긁어와 그 페이지에 있는 주소밖에 크롤링 밖에 할 수 없는 단계다. 하지만 몇 번의 강의를 통해 이번에는 링크로 연결된 페이지까지 안에 있는 링크까지 크롤링해오는 프로그램을 만들고자 한다.


그러기 위해서는 다시 어느 프로그램에서나 나오는 문법들을 익혀야 한다. if라거나 숫자 세기라거나 하는 간단한 것들이다. 그러니 가벼운 마음으로 계속 공부를 해보자.





1. 여러 부호를 사용하여 결과 값을 바꿔보자, 크거나 같고, 같거나 크고...


파이썬에서는 우리가 기본적으로 사용하는 사칙연산뿐만 아니라 크다(<), 작다(>), 같다(==), 아니다(!=) 같은 비교 연산을 사용 가능하다. 이게 뭐 엄청난 건 아니다. 이걸 사용하면 그저 그냥 맞다(True)틀렸다(False) 정도의 차이이기 때문에...

하지만 이걸 배우는 이유는 코드에서 가장 많이 쓰이고 중요한 'if'에서 응용되기 때문이다.



2. 코딩의 꽃 = if


if <TestExpression>:

    <Block>         // return이나 print 같은 것


if의 문법은 이렇게 간단하게 구성되어있지만 이걸 응용하면 정말 다양한 코드를 짤 수 있다. 간단하게 if를 사용하여 큰 값을 가려내는 코드를 짜 보자.



def bigger(a,b):

    if a>b:

        return a

    return b




3. if의 친구 : else


아까는 그냥 아무렇지도 않게 return b를 마지막에 써줬다. 이것으로 코드는 작성했지만 좋은 코드 아니다. if가의 조건을 불만족시켰을 때, "이게 아니면 저거다!"에 해당하는 else가 필요한 순간이다.


def bigger(a,b):

    if a>b:

        r=a

    else:

        r=b

    return r




예제를 보자, 이를테면 친구 이름이 D로 시작하면 친구다라고 가정하면 하면




이름의 첫 글자가 'D'인지 검출해서 맞으면 True, 아니면 False가 나오도록 한다. 하지만 ==와 같은 비교 값은 바로 True/False를 검사할 때 쓰는 것이기 때문에 return에 바로 넣으면 더 빠르고 깔끔한 코드가 될 수 있다.



짧아졌다.



하지만 앞자리가 D도 되고 N도 된다면 상황은 좀 더 복잡해진다. else 안에 N도 검출하도록 또 if와 else를 넣어 줘야 하니까.



먼저 D로 시작하는지 검사해보고 그게 아니면 N으로 시작하는지 검사한 뒤에, 그것도 아니면 친구가 아니라고 하도록 만들었다. 으 두 번 검출이 되니 복잡해지기 시작했다. 복잡도를 싫어하는 것은 프로그래머도 마찬가지다. 역시 이런 걸 줄이기 위해서 훌륭한 파이썬 메이커들은 or이라는 것을 만들었다!





4. 이거냐 or 저거냐 


위에 짜던 코드를 or을 사용하여 줄여보자.



매우 짧아졌다



자 or 하나의 등장으로 이렇게 쉽고 짧고 간단해졌다.





5. 파이썬의 독특한 특징 -  진실 혹은 거짓에 대한 파이썬의 입장


진실 true와 거짓 false는 어느 프로그래밍 언어에나 있는 개념이다. 하지만 이 개념에 대하여 파이썬은 아래와 같은 입장을 취한다.


ture or false = ture

ture or true = true

false or ture = true

false or false = false

ture or dkajldfjaldf(아무거나 정의 안된 아무 말) = ture

false or aldfjaldfjal = error (aldfjald.. 가 정의되지 않았습니다.)


이 말인즉슨 or 앞이 ture면 뒤에 뭐가 나오든(심지어 에러가 있어도) ture다.

하지만 or 앞에 false가 있으면 컴퓨터는 죽자 사자 뒤에 값을 내려고 한다. 그래서 뒤에 값을 뱉는데, 뒤의 값이 에러여도 뱉는다. (에러를 택할지언정 false는 택하지 않겠다는 강단 있는 파이썬이다.)


왠지 위의 진실 혹은 거짓에 대한 입장을 듣다 보면 파이썬 언어를 만든 사람의 성격이 어떤지 짐작이 되는 느낌이다. 역시 사람은 재밌다. 코드를 배우지만 결국은 코드도 사람이 만든 거니까.


자 이번 시간에는 코드의 꽃인 if를 배웠다. 다음 시간에는 코드계의 무한 동력인 loop를 배워보자.

그럼 다음시간까지 안녕.

매거진의 이전글 Python - 4. 웹 크롤러 만들기(3)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari