다운로드
작성자: admin 작성일시: 2016-09-07 13:39:57 조회수: 3295 다운로드: 288
카테고리: Python 태그목록:

파이썬 조건문 기초

if ~ else 명령

if ~ else 명령을 사용하면 조건에 따라 다른 명령을 수행할 수 있다.

if ~ else 명령은 다음과 같이 만든다.

if 참 또는 거짓을 가지는 값:
    조건이 참일 때 실행되는 명령들
else:
    조건이 거짓일 때 실행되는 명령들

이때 주의할 점은 참 또는 거짓일 때 실행되는 명령들은 빈칸을 4칸 띄우고 써야 한다. 이를 들여쓰기(indentation)라고 한다(들여쓰기에 대해서는 다시 자세히 설명하겠다). "참 또는 거짓을 가지는 값"은 조건(condition)이라고 부른다. 예를 들어, 어떤 수가 짝수인지 홀수인지는 2로 나눈 나머지를 보면 알 수 있다. 즉, 2로 나눈 나머지가 0이면 짝수이고 아니면 홀수이다.

In [1]:
a = 1

if a % 2 == 0:
    print("짝수")
else:
    print("홀수")
홀수

만약 어떤 수가 2자리 수의 짝수인지 알고 싶다면 다음과 같이 조건문을 사용한다.

In [2]:
b = 55

if (b >= 10) & (b < 100) & (b % 2 == 0):
    print("2자리 수의 짝수이다.")
else:
    print("2자리 수의 짝수가 아니다.")
2자리 수의 짝수가 아니다.

연습 문제 3.2.9

  1. a 를 짝수로 하여 위의 코드를 다시 실행한다.
  2. b 를 다른 수로 하여 위의 코드를 다시 실행한다.

연습 문제 3.2.10

변수 y의 값이 윤년이면 "윤년입니다"를 출력하고 아니라면 "윤년이 아닙니다"라고 출력하는 프로그램을 만든다. 윤년은 2월 29일이 있는 해로 다음과 같이 정해진다.

  • 서력 기원 연수가 4로 나누어 떨어지는 해는 윤년으로 한다(2004년, 2008년, 2012년, 2016년, 2020년, 2024년, …).
  • 이 중에서 100으로 나누어 떨어지는 해는 평년으로 한다(1900년, 2100년, 2200년, 2300년, 2500년, …).
  • 이 중에서 400으로 나누어 떨어지는 해는 윤년으로 둔다(1600년, 2000년, 2400년, …).

if ~ elif ~ else 명령

조건으로 나누어야 할 경우의 수가 두 가지가 아니라 여러 가지일 때는 다음과 같이 if ~ elif ~ else 명령을 사용할 수 있다.

if 조건1:
    조건1이 참일 때 실행되는 명령
elif 조건2:
    조건1이 거짓이고 조건2가 참일 때 실행되는 명령
elif 조건3:
    조건1과 조건2가 거짓이고 조건3가 참일 때 실행되는 명령

...(생략)...


else:
    지금까지의 어떤 조건도 참이 아니면 실행되는 명령

만약 10문제를 보는 시험에서 8개 이상을 맞으면 성적이 "A", 8개 미만이고 5개 이상을 맞으면 "B", " 5개 미만을 맞으면 "C"가 된다면 점수는 다음과 같이 계산할 수 있다.

In [3]:
c = 6

if c >= 8:
    print("A")
elif c >= 5:
    print("B")
else:
    print("C")
B

연습 문제 3.2.11

위의 시험 성적 예제에서 c를 다른 수로 하여 다시 실행한다.

연습 문제 3.2.12

어떤 농장에서는 수박이 10kg이 넘으면 1등급, 그렇지 않고 7kg이 넘으면 2등급,, 그렇지 않고 4kg이 넘으면 3등급, 나머지는 4등급을 준다고 한다. 이 수박의 등급을 정하는 파이썬 코드를 작성한다.

중첩 조건문

때로는 조건문 안에 조건문이 포함된 형태도 있다. 이러한 형태를 중첩(nesting)이라고 한다. 조건문 내부에 다시 조건문을 중첩하면 4칸을 더 들여써야 한다.

if 조건1:
    조건1이 참일 때 실행되는 명령
    if 조건2:
        조건1과 조건2가 모두 참일 때 실행되는 명령
    else:
        조건1은 참이고 조건2는 거짓일 때 실행되는 명령
else:
    조건1이 거짓일 때 실행되는 명령

예를 들어 중학교에서 팔굽혀펴기 시험을 보는데 남자는 10번 이상을 해야 합격(Pass)이고 아니면 불합격(Fail)이다. 여자는 5번 이상을 해야 합격이라면 다음과 같이 프로그램을 만들 수 있다.

In [4]:
sex = "boy"
pushup = 8

if sex == "boy":
    if pushup >= 10:
        grade = "Pass"
    else:
        grade = "Fail"
else:
    if pushup >= 10:
        grade = "Pass"
    else:
        grade = "Fail"

print(grade)
Fail

연습 문제 3.2.13

'죄수의 딜레마'는 게임 이론의 유명한 사례이다(자세한 내용은 위키피디아를 참조한다: https://ko.wikipedia.org/wiki/죄수의_딜레마). 두 명의 범죄자 A, B가 체포되어 서로 다른 취조실에서 격리되어 심문을 받고 있다. 이들에게 자백 여부에 따라 다음의 선택이 가능하다.

  • 둘 중 하나가 배신하여 죄를 자백하면 자백한 사람은 즉시 풀어주고 나머지 한 명이 10년을 복역해야 한다.
  • 둘 모두 서로를 배신하여 죄를 자백하면 둘 다 5년을 복역한다.
  • 둘 모두 죄를 자백하지 않으면 둘 다 1년을 복역한다.

죄수를 나타내는 변수 XA, XB는 자백하면 True, 그렇지 않으면 False를 가지는 값이다. 이때 변수 XA, XB 값에 따라 각각이 복역해야 하는 연 수를 변수 YA, YB라고 할 때 YA, YB를 계산하는 프로그램을 만든다.

질문/덧글

팔굽혀펴기 예제 hahm*** 2018년 8월 28일 12:11 오전

여자부분에 대해서는 >= 5 가 맞지 않나요?
else:
if pushup >= 5:
grade = "Pass"
else:
grade = "Fail"

답변: 팔굽혀펴기 예제 관리자 2018년 8월 28일 7:05 오후

지적 감사드립니다. 곧 수정하도록 하겠습니다.