본문 바로가기
Python

Python 제어문

by FraisGout 2020. 7. 2.

if

우리가 아는 속담 중에 달면 삼키고 쓰면 뱉는다.‘라는 구절을 파이썬의 if 문으로 나타내 봅시다.

 

코딩연습

c = "sweet"

 

if c=="sweet":

 

print("삼키다")

 

else:

 

print("뱉는다")

 

실행 결과

삼키다

 

파이썬의 if문에서 주의해야 할 것은 바로 예제의 부분입니다.

 

프로그래밍 언어에서는 이 부분을 들여쓰기(indentation)이라 합니다.

 

 

 

파이썬에서 if 문의 들여쓰기가 다르면 indentation Error가 발생합니다.

 

이러한 들여쓰기는 탭(tap) 또는 스페이스바(spacebar)를 사용하여 표현할 수 있습니다.

 

둘 중 어떤 것을 사용해도 상관없으나 같은 코드 내에서는 탭이나 스페이스바 중 하나로 통일하여 사용하는 것이 좋습니다.

 

 

 

if / else 문의 맨 끝에는 콜론(:)을 반드시 기재해야 합니다.

 

다른 프로그래밍 언어에서는 대괄호를 사용하여 if / else 문을 구분하지만, 파이썬에서는 콜론을 사용하여 if / else 문을 구분하므로 코드가 더욱 간결해집니다.

 

조건문과 비교연산자

if / else 문에는 참과 거짓을 판단하는 요소가 필요합니다. 따라서 앞에서 살펴본 예제의 if 문은 참이 되어 실행 결과가 '삼킨다'를 출력하게 되는 것입니다.

)

>>> x = 1

 

>>> y = 7

 

>>> x < y

 

True

 

>>> x > y

 

False

 

>>> x == y

 

False

 

>>> x != y

 

True

 

>>> x <= y

 

True

 

>>> x >= y

 

False

 

x in s, x not in s

파이썬에서만 사용할 수 있는 독특한 조건문이 있습니다.

 

바로 x in sx not in s 입니다.

 

 

 

in 키워드는 변수 sx 값이 포함되어 있다면 True를 반환하고, 포함되어 있지 않다면 False를 반환합니다.

 

반대로 not in 키워드는 변수 sx 값이 포함되어 있지 않다면 True를 반환하고, 포함되어 있다면 False를 반환합니다.

 

이때 변수 s의 자료형은 리스트, 튜플이나 문자열이 올 수 있습니다.

 

 

 

in 이라는 단어의 뜻을 생각하면서 아래 예제를 살펴보면 쉽게 이해가 될 것입니다.

 

)

>>> a in ['a','b','c']

 

False

 

>>> 'a' in ['a','b','c']

 

True

 

>>> 'a' not in ['a','b','c']

 

False

 

 

 

in 키워드를 앞서 살펴본 예제에 응용하면 다음과 같습니다.

 

코딩연습

box =['candy','chocolate','coke']

 

if 'candy' in box:

 

print("삼키다") #pass

 

else:

 

print("뱉다")

 

실행 결과

삼키다

 

 

 

이때 print("삼키다") 대신에 pass 키워드를 넣는다면 아무런 결과도 출력되지 않고 if / else 문이 종료됩니다.

and, or, not

파이썬에서 지원하는 또 다른 연산자가 있습니다. 바로 and, or, not 입니다.

 

C언어에서 이 연산자들을 &&(and), ||(or) 등으로 지원하지만 파이썬에선 좀 더 직관적으로 글자 그대로 지원합니다.

 

코딩연습

a=1

 

b=0

 

if a and b:

 

print("AND")

 

elif a==0:

 

print("a=0")

 

elif b==1:

 

print("b=1")

 

elif not a:

 

print("not a")

 

else:

 

print("OR")

 

실행 결과

OR

위의 예제와 같이 and, or, not을 사용할 수 있습니다.

 

여기서 지금까지는 살펴보지 못했던 elif 키워드가 있습니다.

 

이 키워드는 if / else 문만으로 표현할 수 없는 상황을 위해 또 다른 if 문을 삽입했다고 생각하면 됩니다.

 

while

파이썬에서는 반복해서 문장이나 수식을 수행해야 할 경우 while문을 사용할 수 있습니다.

 

 

 

삼국지의 유비가 제갈량을 데려오기 위해 했던 삼고초려를 생각하며 while 문에 대해 알아봅시다.

 

코딩연습

meet=0

 

while meet<4: # 유비가 제갈량을 방문횟수가 4보다 작을 동안 방문합니다.

 

meet = meet+1 # 방문횟수 증가

 

print("유비가 %d번 방문했습니다." % meet)

 

if meet == 3: # 세 번 만났기 때문에 방문을 종료함.

 

print("제갈량이 유비 곁으로 갑니다.")

 

break # while 문을 빠져나온다.

실행 결과

유비가 1번 방문했습니다.

유비가 2번 방문했습니다.

유비가 3번 방문했습니다.

제갈량이 유비 곁으로 갑니다.

 

위의 예제에서 사용된 break 키워드의 역할은 if 문이나 while , 뒤에서 살펴볼 for문 등의 조건문이나 반복문에서 가장 가까운 분기를 탈출시켜 줍니다.

 

 

 

다음 예제는 지정된 숫자가 입력되기 전까지는 계속해서 실행되는 while 문 예제입니다.

 

)

member = """

 

1.유비

 

2.관우

 

3.장비

 

4.제갈량

 

숫자를 입력하시오 : """

 

 

 

num = 0

 

while num != 4:

 

print(member)

 

num = int(input())

 

실행 결과

1.유비

2.관우

3.장비

4.제갈량

숫자를 입력하시오 :

1

 

 

1.유비

2.관우

3.장비

4.제갈량

숫자를 입력하시오 :

2

 

 

1.유비

2.관우

3.장비

4.제갈량

숫자를 입력하시오 :

3

 

 

1.유비

2.관우

3.장비

4.제갈량

숫자를 입력하시오 :

4

 

 

 

위의 예제에서 while 문은 숫자 4가 입력되기 전까지는 계속해서 실행됩니다.

 

무한루프

마지막으로 무한 루프에 대해 알아봅시다.

 

무한 루프란 단어 뜻대로 while 문과 같은 반복문이 무한하게 반복되는 것을 뜻합니다.

 

 

 

)

while True:

 

print("1234567")

 

실행 결과

1234567

 

1234567

 

1234567

 

...

 

 

 

위의 예제와 같은 무한 루프는 프로그램을 강제 종료(ctrl+C)해야만 빠져나갈 수 있습니다.

 

위의 예제처럼 무의미하게 무한 루프를 사용할 일은 없겠지만, 프로그래밍을 하다보면 무한 루프를 사용해야 하는 경우가 생길 수 있습니다.

 

for

for 문은 이전 단락에서 살펴본 while 문과 같은 반복문입니다.

 

다만 for 문은 튜플이나 리스트를 사용할 때 while 문보다 더욱 간결하게 코드를 작성할 수 있어 많이 사용됩니다.

 

 

 

코딩연습

tempList = ['유비', '관우', '장비', '제갈량']

 

for i in tempList:

 

print(i)

 

실행 결과

유비

관우

장비

제갈량

 

 

 

위의 예제에서 첫 번째 루프에서는 ['유비', '관우', '장비', '제갈량']라는 리스트의 첫 번째 요소인 유비'가 변수 i에 대입되고 print(i)가 수행됩니다.

 

그리고나서 두 번째 루프에서는 리스트의 두 번째 요소인 '관우'가 변수 i에 대입되고 print(i)가 수행됩니다.

 

이와 같은 루프가 리스트의 마지막 요소까지 반복됩니다.

 

 

 

코딩연습

i = [(1,2),(3,4),(5,6)]

 

for (first,last) in i:

 

print(first+last)

 

실행 결과

3

 

7

 

11

 

 

 

위의 예제는 튜플을 이용한 for 문의 예제입니다.

 

for 문의 첫 번째 루프에서는 리스트의 첫 번째 요소인 튜플 (1,2)가 변수 firstlast에 각각 대입되어 변수 first에는 1이 대입되고 변수 last에는 2가 대입됩니다.

 

따라서 print(first+last)1+23을 출력하게 됩니다.

 

이처럼 for 문을 사용하면 튜플의 각 원소를 손쉽게 임시 변수에 대입하여 사용할 수 있습니다.

 

 

 

다음 예제는 for 문과 함께 자주 사용되는 range 함수에 대한 예제입니다.

 

코딩연습

sum = 0

 

for a in range(1,5):

 

sum = sum + a

 

print(sum)

 

실행 결과

10

 

 

 

위의 예제를 살펴보면 변수 sum에 변수 a를 계속해서 더하는 반복문입니다.

 

반복문의 결과는 0+1+2+3+410의 결과값이 출력됩니다.

 

 

 

range 함수는 range(시작 숫자, 마지막 숫자)의 형태로 사용되며, 예를 들어 range(1,5)1, 2, 3, 4의 숫자의 나열을 의미합니다.

 

이처럼 range 함수는 시작 숫자부터 (마지막 숫자 - 1) 까지의 숫자의 나열을 의미하며, 이때 마지막 숫자는 포함되지 않습니다.

 

 

 

다음 예제는 for 문을 두 번 중첩하여 사용하여 구구단을 출력하는 예제입니다.

 

코딩연습

for a in range(2,10):

 

for b in range(1,10):

 

print(a,"X",b,"=", a*b)

 

if b == 9:

 

print("\n")

 

실행 결과

2 X 1 = 2

2 X 2 = 4

2 X 3 = 6

2 X 4 = 8

2 X 5 = 10

2 X 6 = 12

2 X 7 = 14

2 X 8 = 16

2 X 9 = 18

...

 

8 X 1 = 8

8 X 2 = 16

8 X 3 = 24

8 X 4 = 32

8 X 5 = 40

8 X 6 = 48

8 X 7 = 56

8 X 8 = 64

8 X 9 = 72

 

 

9 X 1 = 9

9 X 2 = 18

9 X 3 = 27

9 X 4 = 36

9 X 5 = 45

9 X 6 = 54

9 X 7 = 63

9 X 8 = 72

9 X 9 = 81

'Python' 카테고리의 다른 글

Python 객체지향 프로그래밍  (0) 2020.07.02
Python 함수  (0) 2020.07.02
Python 자료형  (0) 2020.07.02
Python 특징  (0) 2020.07.02

댓글