Python Programming
Python Programming (2) - 조건문
oziguyo_
2020. 3. 28. 06:32
728x90
2. 조건문¶
if else 구문¶
Statement¶
Python interpreter가 실행 가능한 문법에 옳은 문장들을 statement라 한다.
앞 장에서 공부한 statement들과 더불어 조건문과 반복문을 공부해 보자.
1 + 2
x = 7
print("Hello")
newstring = "ABCD".lower()
- 조건문
- 반복문
조건문¶
프로그래머가 명시한 if
의 조건이 True
인가 False
인가에 따라 실행하는 문장(statement)이 달라지는 구문
- 테스트 구문은 항상
True
혹은False
로 계산된다. if
절의 다음에는 만약 테스트 결과가True
일 경우 실행될 코드 블록이 나타난다.- 만약 테스트 구문이
False
로 판명나면 실행하지 않는다.
- 만약 테스트 구문이
- 추가적으로 만약 테스트 구문이
False
일 때 할 일을 나타낼 수 있다.- 이에 해당되는 코드는
else
혹은elif
의 구문에서 나타난다.
- 이에 해당되는 코드는
그림 출처 : Introduction to Computation and Programming Using Python, John V. Guttag
아래 예제에 대한 간략한 설명이다.
x % 2 == 0
(x를 2로 나눈 나머지가 0인가)의 연산결과가 True
이면
print('Even')
을 실행
False
이면
print('Odd')
을 실행
In [32]:
x = 15
if x % 2 == 0:
print('Even')
else:
print('Odd')
if
, else
문의 문법 구조¶
if else
구문의 기본적인 구조는 다음과 같다.
if 조건문:
조건문 결과가 True일 경우 해야 할 일
else:
조건문 결과가 False일 경우 해야 할 일
if
문과else
의 마지막에:
를 포함하여야 한다.if
문은 test 조건문이True
일 경우에 실행되는 코드 블록을 포함함.else
문은if
문에있는 조건식이0
또는False
값으로 해석될 때 실행되는 코드 블록을 포함함.if
문과else
의 내용은 들여쓰기(indentation)를 해야 함.- 하나의
if
에 대응되는else
는 많아야 한 개- 필요가 없을 경우
else
문은 생략 가능
- 필요가 없을 경우
- 코드가 간단할 경우, 줄을 바꿔 들여쓰기를 하지 않고, 다음과 같은 문법도 가능
if 조건문: 조건문 결과가 True일 경우 해야 할 일
else: 조건문 결과가 False일 경우 해야 할 일
In [4]:
my_age = 25
if my_age >= 20: print("get drunk")
else: print("not this time")
In [1]:
my_age = 17
if my_age >= 20: print("get drunk")
else: print("not this time")
else
이 후의 내용이 필요 없을 경우 else
부분은 생략 가능
In [5]:
my_status = 'dirty'
if my_status == 'dirty':
print("take a shower")
print("do a laundry")
In [6]:
my_status = 'clean'
if my_status == 'dirty':
print("take a shower")
print("do a laundry")
들여쓰기 - indentation¶
- C/C++이나 JAVA와 같은 언어에서는 들여쓰기는 코드를 보기 좋게 만들기 위한 것일 뿐 필수적인 것은 아님
- Python에서는 들여쓰기가 문법의 일부이므로 반드시 지키도록 한다.
- 따라서 다음은 바로 위의 코드와는 다르게 작동한다.
In [7]:
my_status = 'clean'
if my_status == 'dirty':
print("take a shower")
print("do a laundry")
간단한 예제:¶
In [2]:
if 3 < 4: print("if")
else: print("else")
In [3]:
if "3" < "4": print("if")
else: print("else")
주의 : 조건문에서 두 값이 같은지 비교할 때는 ==
를 이용해야 한다.
따라서 다음 코드는 에러가 발생한다.
In [10]:
x, y = 3, 3
if x = y:
print("x is equal to y.")
else:
print("x is different from y.")
주의 : 다음 두 코드의 차이점을 잘 살펴보자.
In [11]:
x = 1
if x > 0:
x = x - 2
else:
x = x + 2
print(x)
In [3]:
x = 1
if x > 0:
x = x - 2
if x <= 0:
x = x + 2
print(x)
nested if
statement¶
- 하나의 조건을 검사한 후에, 또다른 조건을 검사해야 될 필요가 있을 수 있다.
- 이러한 경우 중첩된
if
구문을 사용할 수 있다. - 하나의
if
문 혹은else
문 내에 또다른if
,else
구문이 나타날 수 있다.- 마찬가지로
if
문 내에if
문 내에if
문이 등장할 수도 있다.
- 마찬가지로
- 최소값을 찾는 다음의 코드가 옳게 작동하는지 살펴 보고, 잘못된 부분이 있으면 개선하여 보자.
In [13]:
x=10
y=5
z=2
if x<y:
if x<z:
print("x is the least")
else:
print("z is the least")
else: print("y is the least")
elif
을 통한 조건 추가¶
elif
의 문법
if expression1:
statement1(s)
elif expression2:
statement2(s)
elif expression3:
statement3(s)
else:
statement4(s)
elif
문을 사용하면 여러 표현식을 검사하고, 조건 중 하나가True
로 판정되는 코드 블록을 실행else
와 마찬가지로elif
프로그램의 목적에 따라 생략이 될 수 있음- 그러나 많아야 한 번 등장하는
else
와는 달리,if
다음에 임의의 수의elif
문이 있을 수 있음
In [4]:
x = 10
y = 5
z = 2
if x < y and x < z: print("x is the least")
elif y < z: print("y is the least")
else: print("z is the least")
if
문에서and
를 이용하여 두 조건을 동시에 넣은 것에 주의if
의 조건에 해당하지 않으면 (x가 최소값이 아니라면), 두 번째 조건이elif
뒤에 명시되는 것을 확인
예제¶
In [15]:
x = 123
if x < 10:
print('one digit number')
elif x < 100:
print('two digit number')
elif x < 1000:
print('three digit number')
else:
print('large number')
예제¶
다음의 예제는 elif
을 사용하여 보다 간단하게 작성할 수 있다. 스스로 작성하여 보자.
In [16]:
if x%2 == 0:
if x%3 == 0:
print('Divisible by 2 and 3')
else:
print('Divisible by 2 and not by 3')
elif x%3 == 0:
print('Divisible by 3 and not by 2')
Boolean 연산 : and, or, not¶
In [17]:
True and True
Out[17]:
In [18]:
True and False
Out[18]:
In [19]:
False and True
Out[19]:
In [20]:
False and False
Out[20]:
In [21]:
True or True
Out[21]:
In [22]:
True or False
Out[22]:
In [23]:
False or True
Out[23]:
In [24]:
False or False
Out[24]:
In [25]:
not True
Out[25]:
In [26]:
not False
Out[26]:
예제¶
In [27]:
x = 3
y = 7
if x < y and x < 0: print("if")
else: print("else")
In [28]:
x = 3
y = 7
if x < y or x < 0: print("if")
else: print("else")
예제¶
input()
함수와 결합한 예제
In [31]:
answer = input("In Python, = is used for equality comparison, right? Yes or No >> ").lower()
if answer == "no" :
print("You have cleared the test.")
else :
print("You have failed the test.")
print("Thanks!")
Inline if-else
statements¶
Python은 다음과 같이 if else
를 한 라인에 작성할 수 있도록 지원한다.
In [39]:
a = 37
y = "large" if a ** 2 > 1000 else "small"
print(y)
위 코드는 아래 코드와 같다.
In [40]:
a = 37
if a ** 2 > 1000: y = "large"
else: y = "small"
print(y)
- 월(month)이 대입된 정수인 변수가 주어졌을 때, 해당 월이 며칠인지 출력하는 프로그램을 작성하라.
- x, y, z의 세 개의 변수가 있다. 이 세 변수를 검사하여 가장 큰 홀수를 프린트하라. 만약 세 변수가 모두 홀수가 아니라면, 홀수가 없다는 메시지를 출력하라.
- 삼각형 세 변의 길이가 변수로 주어졌을 때, 정삼각형(Equilateral triangle), 이등변삼각형(Isosceles triangle), 일반삼각형(triangle)을 구분하는 프로그램을 작성하라.
- 삼각형 세 변의 길이가 변수로 주어졌을 때, 직각 삼각형인지 아닌지 판단하는 프로그램을 작성하라.
- 두 자리 정수가 대입된 변수를 검사하여, 십의 자리 숫자와 일의 자리 숫자의 합이 10이 넘는지 판단하는 프로그램을 작성하라.
- 13자리 숫자가 ISBN 13자리 코드의 원칙에 맞는지 판단하는 프로그램을 작성하라.
- ISBN코드가 abcdefghijklm일 때, $a+3b+c+3d+e+3f+g+3h+i+3j+k+3l+m$이 10으로 나누어 떨어져야 한다.
- 해(year)가 윤년인지를 판단하는 프로그램을 작성하라. 윤년의 규칙은 다음과 같다.
- 서력 기원 연수가 4로 나누어 떨어지는 해는 윤년으로 한다.(1988년, 1992년, 1996년, 2004년, 2008년, 2012년 …)
- 이 중에서 100으로 나누어 떨어지는 해는 평년으로 한다.(1900년, 2100년, 2200년, 2300년, 2500년 …)
- 그중에 400으로 나누어 떨어지는 해는 윤년으로 둔다.
- 문자열 변수를 검사하여, 마지막 글자가 모음(a, e, i, o, u, A, E, I, O, U)으로 끝나는지 아닌지 판단하는 프로그램을 작성하라.
- 문자열 변수를 검사하여, 첫 글자와 마지막 글자가 같은지 검사하는 프로그램을 작성하라. 대소문자는 구분하지 않는다. 즉, Mom은 첫 글자와 마지막 글자가 같은 단어로 간주한다.
- 두 문자열 변수를 검사하여, 첫 글자끼리 서로 같은지 검사하는 프로그램을 작성하라. 대소문자는 구분하지 않는다.
0 이상 100 이하의 값이 입력된 변수를 검사하여, grade를 정하는 프로그램을 작성하라. 규칙은 다음을 따른다.
- 95 이상 : A+
- 90 이상 95 미만 : A
- 85 이상 90 미만 : B+
- 80 이상 85 미만 : B
- 그 외의 점수 : C
- 몸무게, 키, 성별이 저장된 변수를 조사하여 비만도를 체크하는 프로그램을 작성하라. 비만도 기준은 다음의 자료를 이용하라.
http://health.cdc.go.kr/health/mobileweb/content/group_view.jsp?CID=XUNT32FT6B
728x90