본문 바로가기

교육 노트/파이썬 강의

[파이썬 때려잡기] Python 강의 12 - 조건과 조건문(분기문)

2018/09/04 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 1 - Hello World!

2018/09/04 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 2 - 변수와 자료형, 연산자

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 3 - 파이썬의 자료구조, 리스트 (list)

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 4 - 파이썬의 스트링 (string)

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 5 - 스트링과 리스트 처리-1

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 6 - 스트링과 리스트 처리-2

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 7 - 튜플 (tuple)

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 8 - 딕셔너리 (Dictionary)

2018/09/08 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 9 - 집합 (set)

2018/09/08 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 10 - 사용자 입출력

2018/09/09 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 11 - 변수와 메모리

기능을 가진 프로그램을 제작하기위해 필요한 두가지 기능이 분기문과 반복문인다

이번강의에서는 그중 분기문을 학습하도록 하겠다.


분기문이란 어느 조건에 따라 프로그램의 실행 내용이 분기되는것을 의미한다.

예를들어서

hp가 0이하로 떨어지면 게임을 종료시키는등 프로그램에서는 상황에 맞게 다양한 분기가 발생하게 된다.



파이썬의 분기문은 if문을 통하여 구현된다.

1. if문

if expression:
<내용>

if문의 문법은 위와 같다. 여기서 expression이 일종의 조건으로 해당 조건이 참(True)로 인식되면 해당 <내용> 이 실행되게 된다.

: (콜론)이 마지막에 무조건 들어가 주어야 한다.


hp = -5

if hp < 0:
print("주것다 ㅜㅜ")


주것다 ㅜㅜ


다음과 같이 hp가 -5이면 if문에서 hp < 0을 검사하고  0보다 작으므로 "주것다 ㅜㅜ" 를 출력하게 되는것이다,

중요한점은 파이썬은 단락을 탭단위로 구분하기 때문에

<내용> 부분이 1탭 떨어져있어야한다.

if hp < 0:
print("주것다 ㅜㅜ")

이건 되는데

if hp < 0:
print("주것다 ㅜㅜ")

이건 if문에 들어간게 아니다




그럼 위에 조건에 들어갈 내용들은 어떤것일까


2. 비교 연산자

조건이란 기본적으로 참과 거짓을 판별하는것이다

즉 boolean 타입을 의미하는데 조건식에서 가장 많이 사용되는것이

비교 연산자이다.

< > == != >= <= 과 같은것들인데

<,>과같은것은 수학에서 오 작다 크다와 동일한데

중요한것은 == 연산자이다

파이썬에서는(그외 다른 대부분의 언어에서는) 수학에서 같다(이퀄)라는 의미의 = 표시를 대입연산자에서 미리 사용해 버렸기 때문에

비교연산자에서는 =을 2번 사용한 == 을 사용한다.

반대로 != 는 다르다는 의미이다. >=은 크거나 같다 <=는 작거나 같다 라는 의미이다.

x = 1
y = 2

print(x < y)
print(x > y)
print(x == y)
print(x != y)
print(x <= y)
print(x >= y)


True
False
False
True
True
False


만약에 x가 3보다 크고 10보다 작은지 판별하고 싶으면

3 < x <10 으로 검사하면된다.



3.and, or, not

3 < x <10같은 상황이 아니라 x가 3보다 작거나 10보다 클때를 검사하고 싶으면 어떻게 해야할까

10 < x < 3 ? 말이 안된다.

파이썬에서는 and, or, not같은 논리를 나타내는 키워드를 제공해준다.

x가 3보다 작거나 10보다 클때라는 소리는 x가 3보다 작다 또는 x가 10보다 크다이다

또는 이라는 뜻을 나타내는 파이썬 키워드는 or이다

x = 2
print(x < 3 or 10 <x)


True


and, or, not은 각각 그리고, 또는, 부정을 나타 낸다

3<x<10은 3<x and x<10과 같은 의미이다.

not x == 1은 x !=1 과 같은 의미이다.


위의 키워드들을 통하여 조금더 풍부한 조건식을 나타 낼수 있다.


4. 각종 자료형의 참거짓 처리

기본적으로 참거짓을 나타 내는 형식은 boolean이지만

기타 다른 자료형이  boolean으로 변환될때 특정한 규칙에 맞게 참 또는 거짓 으로 표현된다.

숫자는 0은 거짓 그외는 참

문자열, 리스트, 튜플, 딕셔너리 등은 아무것도 들어있지 않은 텅텅 빈것을 거짓으로 나타내고 요소가 있다면 참

또 None이라는 것도 거짓으로 판단된다.


5. in 과 not in

리스트, 문자열들에서 해당 요소가 있는지 없는지를 검사하기위한 키워드가 in과 not in이다

이름그대로 들어가있는지 또는 들어가있지 않은지를 검사하게된다.

s = "Hello World"

if "Hello" in s:
print("Hello는 있음!")

if "Hello" not in s:
print("Hello는 없음!")

if "Hi" in s:
print ("Hi는 있음!")
if "Hi" not in s:
print ("Hi는 없음!")


Hello는 있음!
Hi는 없음!


6. 다시 if문

이제 풍부한 조건들을 사용할수있으니 if문을 활용해보자

만약 해당 숫자가 짝수인지판별하는 프로그램을 제작한다고 하자.


x = input()
print (x + "는 짝수일까요 홀수일까요?")
x = int(x)

if x%2 == 0:
print ("짝수입니다!")


6는 짝수일까요 홀수일까요?
짝수입니다!


6을 입력했더니 짝수임이 판별되었다.

그러나 5를 입력하면 짝수입니다 라는 표시가 나오지 않는다. 위 프로그램에 홀수임을 판별하는 기능을 추가로 구현해주자

x = input()
print (x + "는 짝수일까요 홀수일까요?")
x = int(x)

if x%2 == 0:
print ("짝수입니다!")

if x%2 == 1:
print ("홀수입니다!")


5는 짝수일까요 홀수일까요?
홀수입니다!


if문을 한개 더 사용하여 홀수판별까지 가능하게 하였다.


그런데 생각해보니 숫자를 입력받으면 짝수가 아니면 당연히 홀수인데 굳이 if문으로 조건을 하나 더 만들어 주었다.
그래서 만든것이 else문이다.
else문의경우 위에 if문이 거짓일때 들어가도록 하는것이다
따라서 위의 프로그램을 다음과 같이 고칠수있다.

x = input()
print (x + "는 짝수일까요 홀수일까요?")
x = int(x)

if x%2 == 0:
print ("짝수입니다!")

else:
print ("홀수입니다!")

위와 같이 하단의 조건을 else문으로 변경하였다.

else문은 위의 if문이 거짓이면 들어가도록 되어있다 즉 x%2 != 0 이면 들어가는것이다.


이렇게 if-else문을 통하여 한가지 조건으로 2가지 상황의 분기를 만들수 있게 되었다.


그런데 만약 분기를 더 늘리고 싶으면 어떻게 할까


그럴떄 사용하는것이 if-elif- else 문이다. elif는 아마 else if 의 축약인데

if expression:
<내용>
elif expression:
<내용>
else:
<내용>



다음과 같이 조건검사를 여러번하여 그중 맞는 조건에따라 내용을 실행하게 된다.


number = input("숫자를 입력해주세요:")
print (number + "는 어떤숫자일까요?")
number = int(number)

if number < 10:
print ("number는 10보다 작습니다.")
elif number < 20:
print ("number는 20보다 작습니다.")
elif number < 30:
print ("number는 30보다 작습니다.")
else:
print ("number는 30보다 크거나 같습니다!.")


숫자를 입력해주세요:15
15는 어떤숫자일까요?
number는 20보다 작습니다.

(하이라이트는 신경끄자)

암튼 다음처럼 15는 10보다 작지 않으므로 처음 if는건너뛰고 그다음 elif에서 20보다 작은지 검사하여 20보다 작아

20보다 작습니다 라는 문구를 출력하였다.


여기서 if-elif-else문과 if-if-if문의 차이가 생기는데

if-elif-else는 한 쌍으로 그중 하나만 실행되지만

if-if-if는 각각 독립적이라 여러개 가 실행될수있다.

예를 들어 위의 예시를 if-if-if로 바꾸어보자

number = input("숫자를 입력해주세요:")
print (number + "는 어떤숫자일까요?")
number = int(number)

if number < 10:
print ("number는 10보다 작습니다.")
if number < 20:
print ("number는 20보다 작습니다.")
if number < 30:
print ("number는 30보다 작습니다.")
else:
print ("number는 30보다 크거나 같습니다!.")


숫자를 입력해주세요:15
15는 어떤숫자일까요?
number는 20보다 작습니다.
number는 30보다 작습니다.

다음과 같이 2,3번째 if문 에 들어가 출력이 2번 되었다.


7. switch 문

파이썬어 없다.



조건문 이전에는 사실 그냥 있는 변수들을 활용하는것만 했으니 딱히 할 실습이 없었는데

if문을 배웠으므로 실습을 진행해 보자면

숫자 2개와 사칙연산 (+-*/)를 입력받아

해당 연산 결과를 출력해보자



728x90