Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

4 if 조건문

Updated: 10 mrt 2026

프로그램은 항상 동일한 순서로만 실행되지 않으며, 상황에 따라 다른 명령을 실행해야 할 때가 많다. 이번 장에서는 참(True)과 거짓(False)을 판별하는 논리식을 작성하는 방법과, 그 결과에 따라 프로그램의 실행 흐름을 제어하는 if 조건문에 대해 알아본다.

4.1논리식

논리식은 부울값, 즉 True 또는 False로 계산되는 표현식이다. if 조건문, while 반복문 등 프로그램의 실행 흐름을 제어하는 명령문을 작성할 때 핵심적인 역할을 한다.

파이썬에서 논리식을 구성하는 주요 연산자는 다음과 같다.

  • 비교 연산자: ==, !=, <, >, <=, >=

  • 멤버십 연산자: in, not in

  • 논리 연산자: and, or, not

4.1.1기본 논리식

가장 단순한 논리식은 비교 연산자 또는 멤버십 연산자를 한 번 이용한 표현식이다.

3 * 2 < 17 - 9
True
17 - 9 >= 3 * 7
False
3 + 2 ==  3 * 2
False
5 != 4 + 1
False
3 in [1, 2, 3, 4, 5]
True
'py' not in 'python'
False

보다 복잡한 구조의 복합 논리식은 기본 논리식과 논리 연산자의 조합으로 생성된다.

4.1.2논리 연산자

영어의 and, or, not 의 개념과 유사하게 작동하는 세 개의 논리 연산자를 이용하여 보다 복잡한 논리식을 구현할 수 있다.

논리 연산자의미예시실행 결과
and그리고1==2 and 3==2+1False
or또는1==2 and 3==2+1True
not부정not 1==2True

논리 연산자 우선 순위

not, and, or 순으로 우순순위가 높다. 예를 들어 not a > b and b > c(not a > b) and b > c와 동일한 값을 표현하는 반면에, not (a > b and b > c)와는 서로 다른 값을 표현한다.

a = -23
b = -7
c = 1

print(not a > b and b > c)
print((not a > b) and b > c)
print(not (a > b and b > c))
False
False
True

이런 이유로 논리 연산자를 사용하는 경우 일반적으로 적절한 괄호 활용이 권장된다.

주의사항

andor 두 연산자는 영어 단어 and 와 or 와는 조금 다르게 작동한다. 예를 들어, 아래 코드를 실행하면 3/0 으로 인해 ZeroDivisionError 오류가 발생할 것으로 기대되지만 그렇지 않다.

(1 > 2) and (3/0 == None)
False

이유는 x and yx가 거짓이면 바로 False로 계산되기 때문이다. 즉 3/0이 나타내는 값을 아예 확인하지 않는다. 반면에 아래 코드는 3/0None 동치 여부를 판단하기 위해 3/0이 먼저 실행되어 오류를 발생시킨다.

(3/0 == None) and (1 > 2)
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
Cell In[9], line 1
----> 1 (3/0 == None) and (1 > 2)

ZeroDivisionError: division by zero

아래 코드는 or 연산자도 영어 단어 or와 조금 다르게 작동함을 보여준다. 이유는 x or yx가 참이면 y를 확인하지 않고 바로 True로 계산되기 때문이다. 즉, 3/0이 어떤 값을 나타내는지 아예 확인하지 않는다.

(1 <= 2) or (3/0 == None)
True

반면에 아래 코드를 실행하면 앞서 설명한 이유와 동일한 이유로 오류가 발생한다.

(3/0 == None) or (1 <= 2)
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
Cell In[11], line 1
----> 1 (3/0 == None) or (1 <= 2)

ZeroDivisionError: division by zero

4.1.3예제

(1) x = 10일 때, 아래 논리식의 결과에 대한 예측 근거를 설명하라.

  1. x > 7

  2. x == 5

  3. x != 10

답:

  1. True

  2. False

  3. False

설명:

  1. 10 > 7은 참이므로 True이다.

  2. 10 == 5는 거짓이므로 False이다.

  3. x가 10이므로 x != 10은 거짓, 즉 False이다.

(2) a = 3, b = 8일 때, 아래 논리식의 결과를 예측하라.

  1. a < 5 and b > 10

  2. a < 5 or b > 10

  3. not (a < 5)

답:

  1. False

  2. True

  3. False

설명:

  1. a < 5는 참, b > 10은 거짓이므로 and 결과는 False이다.

  2. a < 5가 이미 참이므로 or 결과는 True이다.

  3. a < 5가 참이고 not은 참/거짓을 뒤집으므로 False이다.

(3) 아래 코드가 실행중에 오류를 발생시키는 이유를 설명하라.

False or (3/0 == None)
---------------------------------------------------------------------------

ZeroDivisionError                         Traceback (most recent call last)

Cell In[14], line 1

----> 1 False or (3/0 == None)



ZeroDivisionError: division by zero

답:

먼저 오류가 어디서 왜 발생했는가에 대한 정보를 확인한다. 오류 정보의 맨 마지막 줄에 있는 아래 정보는 0으로 나눗셈을 시도했음을 알려준다.

ZeroDivisionError: division by zero

False or (3/0 == None)은 우선 논리 연산자 or를 사용한다. 그리고 or 연산자를 사용하는 논리식의 참/거짓 여부를 계산하기 위해 먼저 첫째 인자의 참/거짓 여부를 확인한다. 그런데 첫째 인자인 False는 (항상) 거짓이다. 따라서 둘째 인자인 (3/0 == None)의 참/거짓 여부를 확인한다. 그리고 여기서 3을 0으로 나눈 결과를 확인하려할 때 문제가 발생한다. 0을 이용한 나눗셈은 허용되지 않기에 오류가 발생한다.

(4) 네 개의 변수가 다음과 같이 정의된다.

a = -2
b = -7
c = 1
d = 0

아래 두 논리식이 서로 다른 값을 갖는 이유를 설명하라.

a > b or b > c and c < d
True
(a > b or b > c) and c < d
False

답:

a = -2, b = -7, c = 1, d = 0일 때:

  • a > b or b > c and c < dand가 먼저 계산되므로 a > b or (b > c and c < d)가 된다. 여기서 a > bTrue이므로 전체는 True이다.

  • (a > b or b > c) and c < d는 괄호를 먼저 계산하므로 (True or False) and False = True and False = False이다.

즉, 연산자 우선순위(andor보다 먼저)와 괄호 위치 때문에 결과가 달라진다.

(5) 아래 두 논리식이 거짓이라고 가정하자.

  • a >= b and a >= c

  • b >= a and b >= c

a < c가 참이다. 이유는 다음과 같다.

  • 첫째 논리식이 거짓이기에 a < b가 참이거나 a < c가 참이어야 한다.

    • a < b가 참이라고 가정하자. 둘째 논리식이 거짓이기 때문에 b < c가 참이어야 하며, 따라서 a < c가 참이다.

    • a < c가 참이면 결론이 바로 성립한다.

  • 어떤 경우에도 a < c가 참이 된다.

동일한 논증을 이용하여 b < c도 참임을 설명하라.

답:

  • 둘째 논리식이 거짓이기에 b < a가 참이거나 b < c가 참이어야 한다.

    • b < a가 참이라고 가정하자. 첫째 논리식이 거짓이기 때문에 a < c가 참이어야 하며, 따라서 b < c가 참이다.

    • b < c가 참이면 결론이 바로 성립한다.

  • 어떤 경우에도 b < c가 참이 된다.

4.1.4연습문제

(1) x = -3일 때 아래 논리식의 결과를 예측하라.

  1. x < 0

  2. x == 0

  3. x != -3

(2) a = 6, b = 9일 때 아래 논리식의 결과를 예측하라.

  1. a < 10 and b < 5

  2. a < 10 or b < 5

  3. not (b >= 9)

(3) 아래 식이 오류를 발생시키는지 판단하고 이유를 설명하라.

  1. True or (5/0 > 1)

  2. True and (5/0 > 1)

  3. False or (5/0 > 1)

  4. False and (5/0 > 1)

(4) p = 2, q = -1, r = 0일 때 아래 두 논리식의 값을 각각 구하고, 서로 다른 값이 나오는 이유를 설명하라.

  1. p > q or q > r and p < r

  2. (p > q or q > r) and p < r

(5) 아래 두 논리식이 거짓이라고 가정하자.

  • a <= b and a <= c

  • b <= a and b <= c

a > c가 참이다. 이유는 다음과 같다.

  • 첫째 논리식이 거짓이기에 a > b가 참이거나 a > c가 참이어야 한다.

    • a > b가 참이라고 가정하자. 둘째 논리식이 거짓이기 때문에 b > c가 참이어야 하며, 따라서 a > c가 참이다.

    • a > c가 참이면 결론이 바로 성립한다.

  • 어떤 경우에도 a > c가 참이 된다.

동일한 논증을 이용하여 b > c도 참임을 설명하라.

4.2조건문

컴퓨터 프로그램은 값을 저장하고 조작하여 새로운 값을 계산하여 활용하는 방법을 묘사한다. 이때 주어진 값에 따라 따라 다른 방법으로 일을 하도록 명령할 수 있다.

4.2.1if ... 명령문

예를 들어 아래 코드는 파이썬을 좋아하는 경우에만 '안녕!'과 ‘파이썬 좋아요.’ 두 문자열이 출력되도록 한다.

love_python = True

if love_python:
    print("안녕!")
    print("파이썬 좋아요.")
안녕!
파이썬 좋아요.

if love_pythonlove_python이 참인지 여부를 확인하도록 하는 명령문이다. 그런데 1번 줄에서 love_python = True라고 작성되어 있기에 love_python이 참으로 확인되고, 따라서 들여쓰기된 print("안녕!")print('파이썬 좋아요.') 두 명령문이 차례대로 실행된다.

반면에 아래 코드를 실행하면 아무 것도 출력되지 않는다. 이유는 1번 줄에서 love_python이 거짓으로 확인되어 들여쓰기된 코드 블록이 실행되지 않기 때문이다.

love_python = False

if love_python:
    print("안녕!")
    print("파이썬 좋아요.")

4.2.2if ... else ... 명령문

위 코드의 if lov_python 조건문에서 love_python이 거짓이어서 들여쓰기된 코드 블록이 실행되지 않았다. 그런데 그런 경우, 즉 if 다음이 거짓으로 판정될 때 실행되는 다른 코드 블록을 else 키워드를 이용하여 지정할 수 있다. 예를 들어 아래 코드는 파이썬을 좋아하지 않는 경우에 파이썬을 사랑해주면 행복진다는 문장을 출력한다.

love_python = False

if love_python:
    print("안녕!")
    print("파이썬 좋아요.")
else:
    print("파이썬을 사랑해주세요!")
    print("그러면 행복해집니다.")
파이썬을 사랑해주세요!
그러면 행복해집니다.

else 키워드 또한 콜론 기호 :로 끝나고 줄바꿈 후에 들여쓰기로 코드 블록을 지정함에 주의한다.

4.2.3if ... elif ... else ... 명령문

참, 거짓 여부를 판단해야 하는 경우가 세 개 이상일 때 조건문에 elif 키워드를 추가로 사용한다. elif 키워드는 영어의 'else if’의 줄임말이며, 원하는 만큼 많이 사용할 수 있다. 예를 들어 아래 코드는 xy의 크기 비교를 위해 작을 때, 클 때, 같을 때 세 가지 경우로 판단한다.

x = -2
y = 3

if x < y:
    print('x가 y보다 작다')
elif x > y:
    print('x가 y보다 크다')
else:
    print('x와 y가 같다')
x가 y보다 작다

ifelif 문에 사용된 조건은 위에서부터 차례대로 확인되어 가장 먼저 참이되는 경우의 명령문이 실행되고 나머지 경우는 무시된다. 예를 들어 위 코드의 조건문은 다음 세 경우를 위에서부터 차례대로 처리한다.

  • x < y가 참인 경우

  • x < y가 거짓이면서 x > y가 참인 경우

  • x < yx > y 모두 거짓인 경우, 즉 x == y 가 참인 경우

이처럼 if ... elif ... else ... 에 사용된 논리식은 항상 이전의 논리식이 거짓임을 가정한다. 아래 코드는 y를 5로 나눈 나머지에 의존하여 서로 다른 명령문을 실행하도록 한다.

y = 4
x = y % 5

if x == 0:
    print('나머지가 0')
elif x == 1:
    print('나머지가 1')
elif x == 2:
    print('나머지가 2')
else:
    print('기타 등등')
기타 등등

elseelif는 용도가 다르다. else를 사용하지 않으면서 위 코드와 동일한 결과를 내려면 다음과 같이 작성해야 한다.

y = 4
x = y % 5

if x == 0:
    print('나머지가 0')
elif x == 1:
    print('나머지가 1')
elif x == 2:
    print('나머지가 2')
elif x == 3:
    print('기타 등등')
elif x == 4:
    print('기타 등등')
기타 등등

반면에 아래 코드는 동일한 결과를 내는 것처럼 보이지만 사실 기능이 다르다. y=4일 때는 결과가 동일하다.

y = 4
x = y % 5

if x == 0:
    print('나머지가 0')
elif x == 1:
    print('나머지가 1')
elif x == 2:
    print('나머지가 2')

print('기타 등등')
기타 등등

하지만 예를 들어 y=2인 경우엔 결과가 다르다.

y = 2
x = y % 5

if x == 0:
    print('나머지가 0')
elif x == 1:
    print('나머지가 1')
elif x == 2:
    print('나머지가 2')

print('기타 등등')
나머지가 2
기타 등등

이유는 마지막 줄의 print('기타 등등')이 위쪽의 if 조건문과 상관없이 항상 실행되기 때문이다. 반면에 이전 코드에서는 else 또는 elif의 경우에 해당되는 경우에만 '기타 등등’이 출력되었다.

4.2.4중첩 조건문

사실 elif 키워드는 없어도 된다. 예를 들어 아래 코드는 주어진 두 값을 비교할 때 크거나, 작거나, 또는 같다의 세 경우를 다음과 같이 구분해서 처리한다.

  • if: x < y가 참인 경우 처리

  • else: x < y가 거짓인 경우. 따라서 x > yx == y 두 경우를 처리해야 함.

    • if: x < y가 거짓이라는 전제 하에 x > y가 참인 경우 처리

    • else: x < y가 거짓이라는 전제 하에 x == y가 참인 경우 처리

x = -2
y = 3

if x < y:
    print('x가 y보다 작다')
else:
    if x > y:
        print('x가 y보다 크다')
    else:
        print('x와 y가 같다')
x가 y보다 작다

그리고 많은 경우 논리 연산자를 활용하면 중첩 조건문을 굳이 사용하지 않아도 된다. 예를 들어 아래 코드는 중첩 조건문을 사용하여 x가 0보다 크면서 동시에 10보다 작은 경우를 다룬다.

x = 3

if 0 < x:
    if x < 10:
        print('x가 0보다 크고 동시에 10보다 작다.')
x가 0보다 크고 동시에 10보다 작다.

print() 함수가 0 < xx < 10 두 조건을 모두 만족하는 경우에만 실행되기에 아래와 같이 and 연산자를 이용할 수 있다.

x = 3

if 0 < x and x < 10:
    print('x가 0보다 크고 동시에 10보다 작다.')
x가 0보다 크고 동시에 10보다 작다.

참고로 0 < x and x < 100 < x < 10로 표현할 수 있다.

x = 3

if 0 < x < 10:
    print('x가 0보다 크고 동시에 10보다 작다.')
x가 0보다 크고 동시에 10보다 작다.

4.2.5예제

(1) 변수 x에 정수 17을 할당했을 때 변수 x가 가리키는 값이 짝수면 0을, 홀수면 1을 출력하는 코드를 if ... else ... 조건문을 이용하여 작성하라.

x = 17

if x % 2 == 0:
    print(0)
else:
    print(1)
1

(2) 변수 langsecond_languages가 다음과 같이 정의된다.

lang='Python'
second_languages = ['C++', 'C#', '자바스크립트', 'Node.js']

가. lang 변수가 가리키는 문자열이 second_languages가 가리키는 리스트에 포함되어 있지 않으면, 리스트의 오른편 끝에 추가된 리스트를 화면에 출력하는 코드를 작성한다.

단, not in과 리스트 이어붙이기 연산자를 활용한다.

답:

if ... 명령문을 이용한다. 이때 if 다음에 오는 진리값을 표현하는 식으로 리스트를 대상으로 항목이 아닌경우에 True로 계산되는 not in 연산자를 이용한다. 또한 리스트의 + 연산을 이용한다.

  • 예제: 새로운 언어를 사용하는 경우

if lang not in second_languages:
    print(second_languages + [lang])
['C++', 'C#', '자바스크립트', 'Node.js', '파이썬']

나. 아래 코드의 실행 결과를 설명하라.

lang = 'Node.js'

if lang not in second_languages:
    print(second_languages + [lang])

답:

lang이 가리키는 문자열이 second_languages가 가리키는 리스트에 포함되지 않기에 if 조건문의 본문이 무시된다. 즉, print() 함수가 실행되지 않는다.

(3) 변수 세 개가 다음과 같이 주어진다.

a = 3
b = 7
c = 10

가. a, b, c가 가리키는 정수 중에서 최댓값을 확인하는 코드를 작성하라.

답:

세 개의 수를 비교해서 나머지 두 수보다 큰 값을 최댓값으로 정한다.

  • abc 모두 보다 같거나 큰 경우: a가 최댓값

  • bac 모두 보다 같거나 큰 경우: b가 최댓값

  • 기타: c가 최댓값

a = 3
b = 7
c = 10

if a >= b and a >= c:
    print("최댓값:", a)
elif b >= a and b >= c:
    print("최댓값:", b)
else:
    print("최댓값:", c)

나. 아래 코드에서처럼 마지막 else 명령문을 elif로 대체해도 되는 이유를 설명하라.

a = 3
b = 7
c = 10

if a >= b and a >= c:
    print("최댓값:", a)
elif b >= a and b >= c:
    print("최댓값:", b)
elif c > a and c > b:
    print("최댓값:", c)
최댓값: 10

답:

a >= b and a >= cb >= a and b >= c 모두 거짓인 경우 a, b 모두 c 보다 작다. 따라서 else의 의미가 c > a and c > b와 동일한 의미를 나타내기 때문이다.

(4) 윤년leap year은 1년이 366일 해를 말하며, 윤년과 평년 여부는 다음 세 가지 규칙으로 판단한다.

  • 4의 배수인 경우 윤년,

  • 하지만 100의 배수인 경우는 평년,

  • 그래도 400의 배수인 경우는 무조건 윤년!

예를 들어 아래 연도는 모두 윤년이다.

  • 1988, 2024: 4의 배수이면서 100의 배수 아님

  • 2000: 100의 배수이지만 400의 배수임

반면에 아래 연도는 모두 윤년이 아니다.

  • 1900: 4의 배수이지만 100의 배수임. 그리고 400의 배수 아님.

  • 2026: 4의 배수 아님.

가. if ... elif ... else ... 명령문을 이용하여 연도가 주어졌을 때 윤년 여부를 판단하는 코드를 작성하라. 단, 아래 세 개의 논리식을 활용하지만 and, or, not 등의 논리 연산자는 절대로 사용하지 않아야 하며, year 변수 정의를 제외한 다른 코드는 변하지 않아야 한다.

  • year % 400 == 0

  • year % 100 == 0

  • year % 4 == 0

답:

먼저 400의 배수는 100의 배수이고, 또 100의 배수는 4의 배수임에 주목한다. 이제 아래 3가지 경우를 차례대로 확인한다.

  • 400의 배수는 무조건 윤년이기에 먼저 400의 배수 여부를 확인해서 참이면 윤년!

  • 400의 배수가 아닌데, 100의 배수라면 평년!

  • 400의 배수도, 100의 배수도 아닌데 4의 배수라면 평년!

  • 나머지 경우, 즉 4의 배수도 아니라면 평년!

if ... elif ... elif ... else ... 명령문을 이용하여 앞서 언급한 경우를 정확하게 표현할 수 있다.

  • 2024년: 윤년

year = 2024

if year % 400 == 0:
    print("400의 배수이기에 윤년!")
elif year % 100 == 0:
    print("400의 배수는 아니지만 100의 배수이기에 평년")
elif year % 4 == 0:
    print("100의 배수가 아니면서 4의 배수이기에 윤년")
else:
    print("4의 배수가 아니기에 평년")
100의 배수가 아니면서 4의 배수이기에 윤년
  • 1900년: 평년

year = 1900

if year % 400 == 0:
    print("400의 배수이기에 윤년!")
elif year % 100 == 0:
    print("400의 배수는 아니지만 100의 배수이기에 평년")
elif year % 4 == 0:
    print("100의 배수가 아니면서 4의 배수이기에 윤년")
else:
    print("4의 배수가 아니기에 평년")
400의 배수는 아니지만 100의 배수이기에 평년
  • 2000년: 윤년

year = 2000

if year % 400 == 0:
    print("400의 배수이기에 윤년!")
elif year % 100 == 0:
    print("400의 배수는 아니지만 100의 배수이기에 평년")
elif year % 4 == 0:
    print("100의 배수가 아니면서 4의 배수이기에 윤년")
else:
    print("4의 배수가 아니기에 평년")
400의 배수이기에 윤년!
  • 2026년: 평년

year = 2026

if year % 400 == 0:
    print("400의 배수이기에 윤년!")
elif year % 100 == 0:
    print("400의 배수는 아니지만 100의 배수이기에 평년")
elif year % 4 == 0:
    print("100의 배수가 아니면서 4의 배수이기에 윤년")
else:
    print("4의 배수가 아니기에 평년")
4의 배수가 아니기에 평년

나. 아래 세 개의 논리식을 중첩 조건문에 활용하여 year가 주저였을 때 윤년 여부를 판정하는 3중 중첩 조건문 코드를 작성하라.

  • year % 400 == 0

  • year % 100 == 0

  • year % 4 == 0

단, elif 키워드는 사용하지 않으면서 if ... else ... 명령문만 중첩해서 사용해야 한다.

답:

year = 2026

if year % 400 == 0:
    print("400의 배수이기에 윤년!")
else:
    if year % 100 == 0:
        print("400의 배수는 아니지만 100의 배수이기에 평년")
    else:
        if year % 4 == 0:
            print("100의 배수가 아니면서 4의 배수이기에 윤년")
        else:
            print("4의 배수가 아니기에 평년")
4의 배수가 아니기에 평년

설명:

이 코드는 elif 없이 if ... else를 중첩하여 윤년 여부를 판정합니다.

  • 먼저 year % 400 == 0을 확인합니다. 참이면 무조건 윤년입니다.

  • 400의 배수가 아니면, 다음으로 year % 100 == 0을 확인합니다. 참이면 평년입니다.

  • 100의 배수도 아니면, year % 4 == 0을 확인합니다. 참이면 윤년입니다.

  • 위 조건이 모두 거짓이면 4의 배수가 아니므로 평년입니다.

즉, 판정 규칙은 다음과 같습니다.

  • 400의 배수 → 윤년,

  • 100의 배수(단 400의 배수 아님) → 평년,

  • 4의 배수(단 100의 배수 아님) → 윤년,

  • 그 외 → 평년.

다. 아래 세 개의 논리식과 함께 and, or, not 등의 논리 연산자를 활용하여 year 변수가 연도를 가리킬 때 윤년 여부를 판단하는 논리식을 활용하여 if ... else ... 명령문을 작성하라.

  • year % 400 == 0

  • year % 100 == 0

  • year % 4 == 0

단, elif 키워드와 중첩 조건문은 사용하지 않아야 한다.

답:

이전 코드에서 윤년으로 판단하는 경우가 두번 발생한다.

  • 첫째: year % 400 == 0가 참인 경우

  • 둘째: year % 100 == 0가 거짓이면서 year % 4 == 0가 참인 경우

따라서 (year % 400 == 0) or (year % 100 != 0 and year % 4 == 0)year가 윤년일 때 참이된다.

  • 윤년인 경우

year = 2000
is_leap = (year % 400 == 0) or (year % 100 != 0 and year % 4 == 0)

if is_leap:
    print("윤년")
else:
    print("평년")
윤년
  • 평년인 경우

year = 2026
is_leap = (year % 400 == 0) or (year % 100 != 0 and year % 4 == 0)

if is_leap:
    print("윤년")
else:
    print("평년")
평년

4.2.6연습문제

(1) 변수 greetings가 다음과 같이 정의된다.

greetings = '파이썬, 안녕!'

변수 char가 가리키는 문자열이 !또는 !!일 때, greetings가 가리키는 문자열에 포함되어 있는 경우에는 ‘파이썬 너무 좋아!!!’ 문장을 출력하고, 아니면 ‘파이썬을 부탁해^^’ 라는 문장을 출력하는 코드를 작성한다. 단, char 변수 이외에는 동일한 코드를 사용해야 한다.

힌트: if ... else ... 명령문과 in 연산자 활용

(2) 변수 세 개가 다음과 같이 주어진다.

a = 3
b = 7
c = 10

가. a, b, c가 가리키는 정수 중에서 최솟값을 확인하는 코드를 작성하라.

나. 아래 코드에서처럼 마지막 else 명령문을 elif로 대체해도 되는 이유를 설명하라.

a = 3
b = 7
c = 10

if a <= b and a <= c:
    print("최솟값:", a)
elif b <= a and b <= c:
    print("최솟값:", b)
elif c < a and c < b:
    print("최솟값:", c)
최솟값: 3

(3) 세 막대이가 주어졌을 때 세 막대를 이용하여 삼각형을 만들 수 있는지 여부를 판단하는 코드를 작성하라. 단, 다음 조건을 만족해야 한다.

  • 세 막대의 길이가 다음과 같다고 가정한다.

    a = 11.3
    b = 25.7
    c = 18.8

    또는

    a = 11.7
    b = 32.9
    c = 20.1
  • 삼각형을 만들 수 있으면 True, 아니면 False를 반환한다.

단, a, b, c 세 변수의 정의를 제외한 다른 코드는 변하지 않아야 하며, if ... else ... 명령문을 활용한다.

힌트: 막대 하나의 길이가 다른 두 막대의 길이의 합보다 작아야 삼각형을 만들 수 있다.

(4) 직사각형 모양의 바닥에 정사각형 모양의 타일을 깔 때 타일은 온장을 그대로 사용할 수도 있고, 잘라서 일부분만 사용할 수도 있다. 타일의 크기는 가로, 세로 모두 30cm이며, 잘라서 사용한 타일의 나머지는 버린다.

가로와 세로 각각 400cm, 500cm 인 바닥을 타일로 덮기 위해 필요한 온장 타일과 잘라서 사용한 타일의 개수의 합을 계산하는 코드를 구현하라.

  • width: 공간의 가로 크기. 단위는 cm.

  • height: 공간의 세로 크기. 단위는 cm.

  • tile_length=30: 타일의 한 변의 크기. 단위는 cm. 기본 키워드 인자는 30.

힌트: 중첩 조건문 활용