[SW Expert Academy / 파이썬 프로그래밍 기초] 6. 흐름과 제어 - If
Programming/Python

[SW Expert Academy / 파이썬 프로그래밍 기초] 6. 흐름과 제어 - If

  • 목차
    • 특정 조건에 따른 명령문 수행을 위한 if 문
    • 상호 배타적 명령문 수행을 위한 if ~ else 문
    • 다중 조건을 처리하기 위한 if ~ elif ~ else 문

 

조건문

질문에 대한 답을 기반으로 작업 수행을 결정하는 문장

파이썬은 조건문으로 if문을 제공하며, if문은 조건에 따라 프로그램이 다르게 수행되도록 만들 수 있다.

 

1. if문

if문

어떤 조건을 만족하는 경우, 명령문을 수행하기 위해 사용

반드시 True 혹은 False 값을 반환해야 한다.

 

if문의 문법

if 조건식 :
        명령문
        명령문
        명령문
  • 들여쓰기는 탭 또는 공백을 일관되게 사용할 것을 권장함.
  • if문 조건식이 True일 경우 수행할 명령문을 코드 블록으로 구성해 기술

 

if문의 활용

  • 점수가 60점 이상일 경우 합격메시지를 출력하는 코드
>>> score = 80             # 정수형의 값 80 저장
>>> if score >= 60:        # score가 60 이상인지를 판단하는 if문 조건식은 True반환
    print("%d 점" % score)
    print("합격입니다.")

80 점
합격입니다.

 

if문 문법의 예외

>>> score = 80
>>> if score >= 60: print("합격입니다.")

합격입니다.
  • if문 뒤에 수행할 명령문을 바로 적을수도 있다
  • 수행해야 하는 명령이 단순하고 가독성에 문제가 없을 경우에만 사용
  • 복잡하거나 가독성에 문제가 있을 경우 다음 행에 블록 구성하기

 

if문 블록의 다양한 명령문

score가 60점 이상일 경우 "합격입니다."라는 문자열이 저장되는 할당문 수행

>>> if score >= 60:
    result="합격입니다."
    print(result)

합격입니다.

한 줄에 다 쓰는 경우 문장 구분에서 오류가 난다

>>> score = 80
>>> if score >= 60:result = "합격입니다."print(result)
SyntaxError: invalid syntax

문장의 끝을 표시하는 구분기호(;)생략가능, 둘 이상의 문장을 한 줄에 기술할 경우 넣어주기

>>> score = 80
>>> if score >= 60:result="합격입니다."; print(result)

합격입니다.

합격 or 불합격 메시지 출력 if문

: 60점 이상일 경우 합격메시지, 60점 미만일 경우 불합격 메시지

>>> result = "불합격입니다."
>>> score = 80
>>> if score >= 60:
    result="합격입니다."
    print(result)

합격입니다.
  • 출력을 위한 변수 result에 기본값 설정
  • score가 60점 미만이면, if문 블록을 실행하지 않음

 

2. if ~ else 문

if ~ else 문

어떤 조건을 만족하는 경우의 명령문과 만족하지 않았을 경우의 명령문을 상호 배타적으로 수행하고자 할때 사용

 

if~else문의 문법

if 조건식 :
        명령문
        명령문        # True일 때 실행할 명령문
        명령문

else 키워드 :
        명령문
        명령문        # False 일 때 실행할 명령문
        명령문

 

if~else문의 활용

>>> score = 80
>>> if score >= 60:
                print("합격입니다.")
        else:
                print("불합격입니다.")

합격입니다.

이때, if문과 else문은 상호 배타적으로 동작하므로, if문이 실행될 때 else문의 블록은 실행되지 않음

 

특정 조건에 따라 변수의 값만 변경이 필요한 경우

>>> result="합격입니다."if score>=60 else "불합격입니다."
>>> print(result)
합격입니다.

 

3. if ~ elif ~ else 문

if ~ elif ~ else문

: 2개 이상의 다중 조건을 처리하고자 할 때 사용

 

if ~ elif ~ else문의 문법

if 조건식:
        명령문1
        명령문2        # 블록1
elif 조건식2:
        명령문3
        명령문4        # 블록2
        # elif문은 여러 번 작성 가능
else:
        명령문5
        명령문6 # 블록3

 

특정 조건에 따라 변수의 값만 변경이 필요한 경우

  • 점수가 90점 이상일 때 A등급,
  • 80점 이상 90점 미만 B등급
  • 70점 이상 80점 미만 C등급
  • 60점 이상 70점 미만 D등급
  • 60점 미만 F등급
score = 70
>>> if score >= 90:
    grade = "A"
elif 80 <= score < 90:
    grade = "B"
elif 70 <= score < 80:
    grade = "C"
elif 60 <= score < 70:
    grade = "D"
else:
    grade = "F"
print("%d 점은 %s 등급입니다." % (score, grade))
>>> score=input("점수를 입력하세요:")
점수를 입력하세요:15

>>> if score >= 90 :
    grade="A"
elif 80 <= score < 90 :
    grade="B"
elif 70 <= score < 80:
    grade="C"
elif 60 <= score < 70:
    grade="D"
else:
    grade="F"
    print("%d 점은 %s 등급입니다." % (score, grade))

Traceback (most recent call last):
  File "<pyshell#71>", line 1, in <module>
    if score >= 90 :
TypeError: '>=' not supported between instances of 'str' and 'int'

>= 비교 연산자는 정수형과 문자열의 비교 연산을 지원하지 않아서 오류가 남

→ 문자열을 반환하는 input() 함수의 적절한 타입 변환 필요

score=int(input("점수를 입력하세요:"))
점수를 입력하세요 : 88
>>> if score >= 90 :
    grade ="A"
elif 80 <= score < 90 :
    grade ="B"
elif 70 <= score < 80:
    grade ="C"
elif 60 <= score < 70:
    grade ="D"
else:
    grade = "F"
print("%d 점은 %s 등급입니다." % (score,grade)

 

if문을 활용해 계산기 만들기

# -*- coding: utf-8 -*-

# 06-19.py

'''
if 문을 활용해 아래의 실행 결과를 반영한 간단 계산기를 만들어 봅시다.
우리가 만들어 볼 간단 계산기는 사용자로부터 두 개의 숫자와 한 개의 연산자를 입력 받아
그 연산자에 따른 계산을 수행할 것입니다.
연산자는 +(덧셈), -(뺄셈), *(곱셈), /(나눗셈)을 지원하도록 할 것입니다.

[실행 결과 1]
첫 번째 숫자를 입력하세요: 2
연산자를 입력하세요(+, -, *, /): +
두 번째 숫자를 입력하세요: 3
2 + 3 = 5

[실행 결과 2]
첫 번째 숫자를 입력하세요 : 2
연산자를 입력하세요(+, -, *, /): #
두 번째 숫자를 입력하세요 : 3\
'#'는 본 프로그램에서 지원하지 않는 연산자입니다.
'''

operand1, operator, operand2 = 0, "", 0

operand1 = int(input("첫 번째 숫자를 입력하세요: "))
operator = input("연산자를 입력하세요(+, -, *, /): ")
operand2 = int(input("두 번째 숫자를 입력하세요: "))

if operator == "+":
    print("%d + %d = %d" % (operand1, operand2, operand1 + operand2))
elif operator == "-":
    print("%d - %d = %d" % (operand1, operand2, operand1 - operand2))
elif operator == "*":
    print("%d * %d = %d" % (operand1, operand2, operand1 * operand2))
elif operator == "/":
    print("%d / %d = %.2f" % (operand1, operand2, operand1 / operand2))
else:
    print("'%s'는 본 프로그램에서 지원하지 않는 연산자입니다." % operator)