if문(조건문)

 if문 이란?

프로그래밍에서 조건을 판단하여 해당 조건에 맞는 상황을 수행하는 데 쓰이는 조건문

 

if문 기본구조
if 조건문 : 
	수행할 문장1
	수행할 문장2
else :
	수행할 문장A
	수행할 문장B

 

조건문을 테스트 해서 참(True)이면 if문에 해당하는 내용을 수행하고, 거짓(False)면 else문에 있는 내용을 수행한다. 따라서 else는 if문 없이 단독으로 사용할 수 없다.

 

들여쓰기

다른 프로그래밍 언어와 달리 python은 들여쓰기(indentation)를 잘 지켜야한다.

if condition : 
    print("dokev")
    print("archive")
    print("python")
    
    ''' 출력결과
    
    dokev
    archive
    python
    
    '''

위와 같이 [tab] 키를 눌러서 들여쓰기를 해줘야 원하는 대로 출력이 되는 것을 볼 수 있다.

condition = True

if condition : 
    print("dokev")			# ①
    	print("archive")		# ②
print("python")			# ③

①의 경우에는 조건식 condition의 값에 따라 출력이 되는 것을 볼 수 있고, ②의 경우는 'Unexpected indentation Pylance' 오류 메세지가 출력하는 것을 볼 수 있다. 마지막 ③의 경우는 조건식과 관계없이 무조건 출력이 된다.

 비교 연산자

비교 연산자는 값의 크기를 비교하여 참(True)와 거짓(False)을 판별한다.

비교 연산자 설명
x < y  x가 y보다 작다
x > y  x가 y보다 크다
x == y  x와 y가 같다
x != y  x와 y가 같지 않다
x >= y  x가 y보다 크거나 같다
x <= y  x가 y보다 작거나 같다

if문의 기준이 되는 조건문 money >= 3000 이 거짓이 되기 때문에 else문에 해당하는 "아메리카노를 마신다" 가 출력이 되는 것을 확인할 수 있다. 

money = 2000
if money >= 3000
	print("바닐라라떼를 마신다")
else :
	print("아메리카노를 마신다")
    
# 출력결과 : 아메리카노를 마신다

 

논리 연산자

논리 연산자는 and, or, not 연산자를 사용해서 조건을 판단한다

논리 연산자 설명
x or y  x와 y 둘중에 하나만 참이어도 참이다
x and y  x와 y 모두 참이어야 참이다.
not x  x가 거짓이면 참이다

x와 y는 조건식 혹은 조건문으로 이루어 진다. x에 money>=3000 이라는 식과 y 에 True 라는 값을 넣어서 확인해보자!

money = 2000
x = money >= 3000
y = True

if x or y :
	print("x or y : True")
else :
	print("x or y : False")
    
if x and y :
	print("x and y : True")
else :
	print("x and y : False")
    
if not x :
	print("not x : True")
else :
	print("not x : False")
    
'''
출력결과 
x or y : True
x and y : False
not x : True
'''

 

 in 연산자

다른 프로그래밍 언어에서는 쉽게 볼 수 없는 조건문을 제공한다. in의 뜻이 '~안에' 라는 의미가 있듯이 in 은 리스트, 튜플, 문자열안에 해당하는 값이 있다면 True, 없으면 False를 반환하고, not in의 경우에는 해당 리스트, 튜플, 문자열 안에 값이 없다면 True, 있으면 False값을 반환한다.

x = 'dokev archive'
y = [1, 2, 3]

print('d' in x)	# 출력결과 : True
print('j' in x)	# 출력결과 : False

print(1 not in y)	# 출력결과 : False
print(4 not in y)	# 출력결과 : True

 

 elif 사용

보통 else if 로 자주 사용하지만 python에서는 elif로 사용된다. 조건문에서 처음 나오는 조건 if 이후에 나오는 다른 조건들은 elif (else if의 줄임말)을 사용해서 나타내도록 한다.

'''
elif 기본구조

if 조건문1 : 
	수행할 문장1
elif 조건문 2 :
	수행할 문장2
elif 조건문 n :
	수행할 문장n
else :
	수행할 문장m
'''

money = 2000

if money >= 3000:
    print("바닐라 라떼를 마신다")
elif money >= 1500:
    print("아이스 아메리카노를 마신다")
else:
    print("따뜻한 아메리카노를 마신다")

 

조건부 표현식

변수 = 참일 경우 값 if 조건문 else 거짓일 경우 값

조건부 표현식은 가독성에 유리하고 한줄로 작성할 수 있어 활용성이 좋다.

money = 4000
message = "바닐라라떼를 마신다" if money >= 3000 else "아메리카노를 마신다"

print(message)	# 출력결과 : 바닐라라떼를 마신다

 

while문(반복문)

 while문이란?

조건문이 참인 동안에 while문에 속한 문장들이 반복해서 수행된다. ex) "열번 찍어 안 넘어가는 나무 없다 "는 속담을 파이썬 프로그램으로 만들기

treeHit = 0
while treeHit < 10 :
	treeHit = treeHit + 1
	print("나무를 %d번 찍었습니다." %treeHit)
	if treeHit == 10 :
		print("나무가 넘어갑니다.")
        
'''
출력결과
나무를 1번 찍었습니다.
나무를 2번 찍었습니다.
나무를 3번 찍었습니다.
나무를 4번 찍었습니다.
나무를 5번 찍었습니다.
나무를 6번 찍었습니다.
나무를 7번 찍었습니다.
나무를 8번 찍었습니다.
나무를 9번 찍었습니다.
나무를 10번 찍었습니다.
나무가 넘어갑니다.
'''

위 예제에서 while문의 조건문은 treeHit < 10 이다. 즉 treeHit가 10보다 작은 동안에 while문이 반복돼서 실행된다. 그리고 treeHit가 10보다 크게 된다면 조건문이 False가 되므로 while문을 종료한다.

 while문 강제로 빠져나가기

while문을 수행하다가 강제로 종료시키기 위해서는 break 문을 사용하면 된다. break문을 사용하는 시점에서 반복을 중지되고 while문이 종료되는 것을 볼 수 있다.

treeHit = 0
while treeHit < 10:
    treeHit = treeHit +1
    print("나무를 %d번 찍었습니다." % treeHit)
    if treeHit == 3:
        print("너무 힘들어서 그만둡니다.")
        break
        
'''
출력결과
나무를 1번 찍었습니다.
나무를 2번 찍었습니다.
나무를 3번 찍었습니다.
힘들어서 그만둡니다
'''

 

while문의 처음으로 돌아가기

break문은 while문을 빠져나갔다고 하면 continue문은 이후 문장을 실행하지 않고 while문의 처음으로 돌아가는 역할을 한다. treeHit가 3일때 이후 문장을 실행하지 않고 다시 while문의 처음으로 돌아가서 반복문을 다시 실행하는 것을 볼 수 있다.

treeHit = 0
while treeHit < 10 :
	treeHit = treeHit + 1
	if treeHit == 3 :
		continue
	print("나무를 %d번 찍었습니다." %treeHit)
    
'''
출력결과
나무를 1번 찍었습니다.
나무를 2번 찍었습니다.
나무를 4번 찍었습니다.
나무를 5번 찍었습니다.
나무를 6번 찍었습니다.
나무를 7번 찍었습니다.
나무를 8번 찍었습니다.
나무를 9번 찍었습니다.
나무를 10번 찍었습니다.
'''

 

 무한루프

while문의 조건식이 계속 참일 경우 반복문을 무한으로 실행한다. 아무 의미 없이 무한 루프를 돌리는 경우는 거의 없을 것이므로 무한루프를 빠져나가기 위해 [Ctrl]키 + [C]키를 눌러서 빠져 나오도록 한다.

 

for문

 for문의 기본 구조
'''
for 변수 in 리스트(또는 튜플, 문자열) :
	수행할 반복문1
    수행할 반복문2
    
'''

fruits = ['strawberry', 'banana', 'orange']
for i in fruits:
	print(i)
    
'''
출력결과
strawberry
banana
orange
'''

 

 

 for문과 range함수

range 함수는 숫자 리스트를 자동으로 만들어 주는 함수로써 for문과 함께 사용하는 경우가 많다. range(10)은 0부터 10미만(10은 포함하지 않음)의 숫자를 포함하는 range객체를 만들어 주고, range(1, 11) 은 1부터 10까지(1이상, 11미만)의 숫자를 지정해준다.

a = range(10)
b = range(1, 11)

print(a)	# 출력결과 : range(0, 10)
print(b)	# 출력결과 : range(1, 11)

for문과 range함수를 함께 사용하는 예제를 살펴보자. 아래 예제는 1부터 10까지의 합을 구하는 문제를 for문과 range함수를 이용해서 작성한 것이다.

add = 0
for i in range(1, 11) :
	add = add + i

print(add)	# 출력결과 : 55

 

 for문과 range함수를 이용한 구구단
for i in range(2, 10):
    print("===", i, "단 ===", end="\n")
    for j in range(1, 10):
        print(i, "*", j, "=", i*j, end="\n")
    print(end="\n")

'''
출력결과
=== 2 단 ===
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
.
.
.
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81
'''

 

 리스트 컴프리헨션

리스트 컴프리헨션(List comprehension) : 리스트 안에 for문을 포함, 좀 더 편리하고 직관적인 프로그램을 만들 수 있다. 아래 예제는 a리스트의 각 요소에 3을 곱한 결과를 result 리스트에 담는 예제이다.

a = [1, 2, 3, 4]
result = []

for num in a :
	result.append(num*3)
    
print(result)	# 출력결과 : [3, 6, 9, 12]

또한 리스트 컴프리헨션을 다음과 같이 표현할 수도 있다.

[ 표현식 for 항목 in 반복가능객체 if 조건문]

# a 리스트에서 짝수에만 3을 곱한다
a = [1, 2, 3, 4]
result = [num * 3 for num in a if num % 2 == 0]

print(result)	# 출력결과 : [6, 12]

위와 같이 사용할 수도 있고, 복잡하지만 for문을 여러개 사용할 수도 있다. 구구단의 모든 결과를 리스트에 담아 보도록 하자

result = [x*y for x in range(2,10) for y in range(1,10)]
print(result)	# 출력결과 : [2, 4, 6, ... 63, 72, 81]

 

 

 

+ Recent posts