본문 바로가기
프로그래밍 언어/파이썬

4.조건문

by Jinger 2023. 2. 20.

서론

    코드를 짤 때 특수한 상황이 올 때 작동하는 코드나, 현재 내 상황을 확인할 때 등 프로그램의 흐름을 조절해 주는 것이 조건문이다. 조건문을 짜기 전에 불연산자를 알아야 한다. 컴퓨터는 기본적으로 0과 1로 작동하고 이를 통해 정말 다양하게 작동한다. 그게 가능케 하는 이유 중 하나가 불연산자이다.


불연산자

    불(bool) 혹은 불대수는 참(True) 혹은 거짓(False)을 나타낸다. 불연산자는 불자료형을 다루는 연산자로 비교 연산자와 논리 연산자로 나눈다.(True == 1, False == 0로 대체 가능하다. True와 False의 첫 글자는 대문자이다.)
비교 연산자는 양변의 같은 자료형을 비교하는 연산자이다. 숫자는 물론이고, 문자도 아스키코드 기준으로 크거나 작다를 비교할 수 있다.

비교 연산자 설명
== 같다
!= 다르다
> (우변이)크다
< (우변이)작다
>= (우변이)크거나 같다
<= (우변이)작거나 같다

    논리 연산자는 양변의 조건 중 둘 다 참("and" 연산자) 혹은 둘 중 하나가 참("or" 연산자)을 나타낸다. 그리고 결과의 반대 결과를 나타내는 "not" 연산자까지 포함한다.

and   or   not
좌변 우변 결과 좌변 우변 결과 단항 결과
True True True True True True True False
True False False True False True False True
False True False False True True  
False False False False False False

 


if문

    if문을 조건문이라 불린다. if문의 사용방법은 if문 뒤에 조건을 적고 ":" 콜론을 붙인 뒤 실행시키고 싶은 코드를 다음줄에 적는다. 주의할 점은 들여 쓰기(블록)로 if문 안과 밖을 구분한다. 이후 또 다른 조건이 있으면, elif로 다음 조건을 늘려갈 수 있고, 조건의 나머지 부분은 else를 통해 처리한다. 즉, 조건문의 기본 형태는 아래와 같다.

if(조건):
----코드 #"----"은 블록이다.
elif(조건): #필요가 없을 경우 생략 가능
코드
else: #필요가 없을 경우 생략 가능
코드

    또한, 조건문 안에 더욱 조건을 나눌 경우 조건문 안에 조건문을 사용할 수 있다. 만약 이해가 가지 않는다면, 아래 예시에서 True와 False를 바꿔가며 구조를 알아가기를 바란다.

a=True
b=True
c=True

if(a):
  print("a")
  if(b):
    print("b")
  elif(c):
    print("c")
else:
  print("d")
print("e")

코드 블록

    다른 언어에서는 구조를 {}를 통해 만들지만, 파이썬에서는 if문 내부를 블록을 통해 만든다. 블록은 단순히 띄어쓰기를 통해 구분을 하는 데, 띄어쓰기가 몇 칸인지가 중요하다. 보통은 Tab을 통해 일정하게 유지를 하지만, 컴퓨터마다 Tab의 크기를 바꿀 수 있기 때문에 몇 칸이라고 단정 지을 순 없지만, 블록은 모두 일정해야 한다.

예시

    if문의 가장 유명한 예시로 윤년 문제가 있다. 윤년이란 4년에 한 번씩 2월 29일 생기는 그 해를 말한다. 이때 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때 윤년이 된다는 규칙이 있다. 다양한 코드가 있겠지만, 아래와 같이 간단하게 적을 수 있다. 그 외의 다양한 방법이 있으니 직접 코드를 짜보는 것을 추천한다.(백준 2753번 문제: 윤년)

    여기서 주의해야 할 점은 조건문의 ()이다. 불연산자 또한 () 내부가 우선적으로 계산하기에 ()의 존재 혹은 잘 못 괄호를 쳤을 경우 다른 결과가 나올 수 있다.(True와 False를 간단하게 T와 F로 적겠다.)

A and (B or C)
A B C B or C A and (B or C)
T T T T T
T T F T T
T F T T T
T F F F F
F T T T F
F T F T F
F F T T F
F F F F F
(A and B) or C
A B C A and B (A and B) or C
T T T T T
T T F T T
T F T F T
T F F F F
F T T F T
F T F F F
F F T F T
F F F F F

     위의 표를 확인해 보면, 괄호만 다르게 해도 다른 결과가 나오는 것을 확인할 수 있다.(사실 윤년 조건의 수학적 원리를 따지면 괄호를 어디에 치든 상관이 없다.)

Switch

    다른 언어를 공부하고 왔으면, Switch의 존재를 알지만, 파이썬에서 이 기능을 지원하지 않는다.(Switch도 조건문이다.)


주섬주섬

    if문을 잘 활용하면 코드의 길이를 획기적으로 줄일 수 있는 곳 중 하나이다. if문이 들어간 코드를 짤 경우 생각을 많이 해보고 작성하길 바란다.

  • 조건에서 특이 사항으로 (None,), [None], {None}는 True이지만 0, 0., None, '', (), [], {}, range(0), (None)는 False 이다.
  • True는 일반적으로 1이 True라 하였지만, 0을 제외한 모든 숫자가 True를 의미할 수 있다.

출처

 

2753번: 윤년

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서

www.acmicpc.net

반응형

'프로그래밍 언어 > 파이썬' 카테고리의 다른 글

6.시퀀스  (0) 2023.02.21
5.반복문  (0) 2023.02.20
3.변수와 입력문  (0) 2023.02.18
2. 출력문  (1) 2023.02.18
1. 파이썬 들어가기에 앞서  (1) 2023.02.16

댓글