본문 바로가기
파이썬/파이썬 완성

[파이썬] TIL3 : If 조건문의 구조 / 비교 및 논리 연산자를 이용한 조건식 작성과 흐름 제어

by charlie-lyc 2021. 4. 16.
728x90
반응형

 조건문

프로그램은 일종의 명령어(Instruction)들의 집합이라고 할 수 있고 이런 명령어들은 주어지는 조건에 따라 의사 결정을 다르게 하기 위해 흐름을 제어하는 표현문(Statement)이 필요합니다. 흐름을 제어하기 위해 사용되는 코드 구문을 조건문(Conditional Statement)이라고 합니다.

파이썬의 조건문을 작성할 때는 코드 블럭의 명확한 구분을 위해 '들여 쓰기(Indentation)'에 주의해야 합니다. 이후에 익히게 될 반복문과 함수 작성 시에도 들여 쓰기는 중요합니다.

 

※ 파이썬에서 들여쓰기를 할 때는 탭키와 스페이스키혼용해서 사용하지 않고 한 가지만 일관되게 사용해야 하며, 스타일 가이드에서는 스페이스 4칸 사용을 권장합니다. 다만 스페이스 4칸을 일일이 타이핑하면 번거롭기 때문에 코드 편집기(Code Editor)의 설정에서 '탭키 사이즈(Tab size)'를  '4'로 설정(Visual Studio Code 기준)해주면 탭키를 이용하여 간편하게 들여 쓰기를 할 수 있습니다. 편집기의 종류에 따라 '들여쓰기 타입(Indentation type)'을 '스페이스(Space)'로 설정하고, '들여 쓰기 사이즈(Indentation size)'를 '4'로 설정해야 하는 경우도 있습니다. 

 


비교 연산자와 논리 연산자

조건문에서 조건식을 작성할 때 사용하여 참 또는 거짓을 판명할 수 있게 해주는 연산자를 비교 연산자(Comparison operator)와 논리 연산자(Logicla operator)라고 합니다.

 

※ 비교 연산자의 종류
①  >    :  크다 
②  <    :  작다
③  >=  :  크거나 같다
④  <=  :  작거나 같다
⑤  ==  :  같다
⑥  !=   :  같지 않다 

 

※ 논리 연산자의 종류
①  and 또는 &  :  논리 연산 AND 
②  or 또는 |      :  논리 연산 OR
③  not              :  논리 연산 NOT

 


 If Else 조건문

아래는 If Else 조건문의 기본 구조입니다. if 다음의 <condition>을 '조건식'이라고 하며, 이 조건식을 만족하여 그 결과가 참(True)인 경우에는 바로 아래에 이어지는 명령(# do this)을 실행하고, 조건식을 만족하지 않아 그 결과가 거짓(False) 일 경우에는 else 아래의 명령(# do that)을 실행합니다.

 

# If Else

if <condition>:
  # do this
else:
  # do that

 

롤러코스터를 타기 위해 표를 구입하려고 하는데 안전을 위해서 키가 120cm 보다 커야 탑승할 수 있습니다. 키를 cm로 입력하면 탑승이 가능한지, 아닌지 아래와 같이 알려주는 프로그램을 만들어 봅시다.

 

What is your height in cm? <키>

You can ride the rollercoaster!
<또는>
Sorry, you cannot ride the rollercoaster.

 

조건문을 작성할 때 사용할 조건식과 참일 경우의 실행 명령문, 그리고 거짓일 경우의 실행 명령문들을 아래와 같이 흐름도(Flow chart)로 도표화해보는 것은 조건문을 구성하는데 도움이 됩니다.

 

 

또한 본격적으로 코딩을 하기 전에 유사 코드(Pseudocode)로 먼저 작성해보는 연습 또한 컴퓨터적인 사고(Coputational Thinking)를 기르는데 유용합니다. 유사 코드를 작성하는데 별도의 문법이 있는 것은 아니지만 표현문의 전체 구조는 실제 코딩과 유사하게 하되, 구체적인 값이나 변수명은 사용하지 않고 마치 글을 읽듯이 자연스럽게 읽을 수 있을 정도면 적당합니다.

 

다음은 위의 문제를 유사코드로 작성한 예시입니다.

 

# 키를 센티미터 단위로 input 받아 변수에 할당

# if 변수의 값(키) > 120 
  # print 탑습 가능
# else 
  # print 탑승 불가능

 

🖥  코드, 실행 및 입력 결과

 


 Elif 조건문

조건식이 2개 이상일 경우 사용되는 조건문의 구조입니다.

 

# Elif

if <condition1>:
  # do this
elif <condition2>: 
  # do it
else:
  # do that

 

롤러코스터를 타기 위해 표를 구입하려고 하는데 나이가 12세 미만이면 5,000원이고, 12세 이상이고 18세 미만이면 7,000원, 그리고 18세 이상은 모두 12,000원이라고 합니다. 나이를 입력하면 요금을 아래와 같이 알려주는 프로그램을 만들어 봅시다. 

 

What is your age? <나이>

Ticket 5000.
<또는>
Ticket 7000.
<또는>
Ticket 12000.

 

본 코드를 작성하기 전에 유사코드를 작성해 보면 아래와 같습니다. 이 유사 코드는 하나의 예시이며 각자 자신의 스타일로 작성해보길 바랍니다.

 

# 나이를 input 받아 변수에 할당

# if 변수의 값(나이) < 12
  # print 표 5000
# elif 변수의 값(나이) >= 12 and 변수의 값(나이) < 18 
  # print 표 7000
# else
  # print 표 12000

 

🖥 코드, 실행 및 입력 결과

 


반응형

 


 중첩 조건문

조건식이 조금 더 복잡해져서 조건문 안에 조건문이 들어간 구조가 된 것을 중첩 조건문(Nested conditional statement)이라고 합니다.

 

# Nested If Else

if <condition>:
    if <another condition>:
      # do this
    else:
      # do it
else:
  # do that

 

앞서 예시를 들었던 두 가지 경우를 합쳐서 하나의 조건문 구조로 그림을 그려 보면 아래와 같습니다.  즉, 키가 120cm 보다 크면 탑승이 가능함과 나이에 따른 요금을 알려주고, 그렇지 않을 경우에는 탑승할 수 없음을 알려주는 프로그램의 흐름도입니다. 

 

 

그리고 이를 유사코드로 작성해 보면 아래와 같습니다.

 

# 키를 센티미터 단위로 input 받아 변수에 할당

# if 변수의 값(키) > 120
  # print 탑승 가능
  
  # 나이를 input 받아 변수에 할당
  # if 변수의 값(나이) < 12
    # print 표 5000
  # elif 변수의 값(나이) >= 12 and 변수의 값(나이) < 18 
    # print 표 7000
  # else
    # print 표 12000
    
# else 
  # print 탑승 불가능

 

🖥 코드, 실행 및 입력 결과

 


 다중 If 조건문

두 개 이상의 If 조건문을 사용하는 경우를 다중 If 조건문(Multiple If statements)이라고 합니다. If 조건문에서 조건식을 분기하는데 비교 연산자나 논리 연산자를 이용하여 하나의 조건문에 모두 표현하기 어려운 경우, 즉 별개의 조건을 추가해야 할 경우에 필요한 구조입니다.

 

# Multiple If

if <condition1>:
  # do A

if <condition2>:
  # do B

if <condition3>:
  # do C

 

앞서 예시를 들었던 롤러코스터 탑승 시 인증 사진을 찍을 경우 요금이 3,000원 추가되고, 원하지 않을 경우에는 추가되지 않는다면, 합계 요금은 얼마가 될까요? 롤러코스터를 타러 온 손님에게 최종 요금을 알려주는 프로그램을 만들어 봅시다. 인증 사진을 조건문에 추가하여 흐름도를 작성해 보면 아래와 같습니다.

 

 

그리고 이를 유사코드로 작성해 보면 아래와 같습니다.

 

# 키를 센티미터 단위로 input 받아 변수에 할당
# 요금계산을 위한 변수 0으로 초기화

# if 변수의 값(키) > 120
  # print 탑승 가능
  
  # 나이를 input 받아 변수에 할당
  # if 변수의 값(나이) < 12
    # print 표 5000
    # 요금 + 5000원
  # elif 변수의 값(나이) >= 12 and 변수의 값(나이) < 18 
    # print 표 7000
    # 요금 + 7000원
  # else
    # print 표 12000
    # 요금 + 12000원
    
  # 인증사진 여부를 input 받아 변수에 할당
  # if 변수의 값(인증사진) == '네'
    # 요금 + 3000원
  # print 최종 합계 요금 ? 원
    
# else 
  # print 탑승 불가능

 

앞서 설명한 내용들과 흐름도, 그리고 유사 코드를 바탕으로 소스코드를 보지 않고 코딩을 해보길 바랍니다. 만약에 막히면 부분이 생긴다면 익힌 내용을 다시 한번 확인하거나 구글링하여 시도해 보길 권장합니다.

 

⌨️ 파이썬 온라인 컴파일러에서 최종 프로그램을 만들어 봅시다.


아래의 소스 코드와 반드시 일치할 필요는 없습니다. 자신의 스타일대로 코딩하고 제대로 작동되는지 직접 확인해 보는 것이 중요합니다.

 


728x90
반응형

댓글