[Python] 제어문(if, while, for, break, continue)과 들여쓰기


Study/Python  2019. 12. 5. 09:00

안녕하세요. 명월입니다.


이 글은 Python에서 사용되는 제어문(if, while, for, break, continue)과 들여쓰기에 대한 글입니다.


제어문이란 말 그래도 프로그램를 제어하는 키워드입니다.

예를 들면, a라는 변수에 사용자 임의의 숫자 1를 바든다고 할 때 짝수 일때는 "Even number"를 출력하고 홀수 일때는 "Odd number"를 출력하고자 할때 a의 대하여 짝수, 홀수인지 제어하는 방법을 이야기합니다.

print("Please enter number.")
a = int(input())
if a%2 == 1:
  print("Odd number")
else:
  print("Even number")

if ~ elif ~ else

분기문이라고 불리는 if문입니다. 위에 예제로 잠깐 살펴보기는 했습니다만 해당 조건식에 참인 조건이 들어오면 실행하는 제어문입니다.

if 조건:
  참일 경우 실행.
elif 조건:
  참일 경우 실행.
else:
  위 if 조건이 모두 거짓일 경우 실행

if문은 단독으로 「if」만 사용할 수 있고 「if ~ else」로 사용할 수 있고 「if ~ elif」로 사용할 수 있습니다.

그러나 「elif ~ else」나 「elif 단독」, 「else 단독」으로는 사용할 수 없습니다.


주의할 점은 조건식이 끝나면 반드시 콜론(:)을 넣어야 합니다.

그리고 조건식 안의 실행 구분은 다른 언어의 경우는 「{}」 중괄호로 실행 영역을 설정을 하는데 파이썬의 경우는 들여쓰기로 결정합니다.


띄어쓰기는 글 마지막에 자세히 설명하겠습니다. 이동 => 들여쓰기

a = 1
#조건문에 a는 0이 아니기 때문에 실행되지 않습니다.
if a == 0:
  print("a is 0.")
print("end!")

a = 6
# 6은 짝수이기는 하지만 3의 배수이기 때문에 if에 먼저 걸립니다.
if a%3 == 0:
  print("Multiple of 3")
elif a%2 == 1:
  print("Odd number")
else:
  print("Even number")

while

while은 반복문입니다. 반복문은 해당 조건이 거짓이 될때까지 반복해서 실행하는 제어문입니다.

i=0
# i가 10미만이면 참이고 10이상이면 거짓으로 i가 10이면 종료되는 반복문입니다.
while i<10:
  # i를 출력합니다.
  print(i)
  # i를 1씩 증가시킵니다. 만약, 이 증가식이 없으면 i는 while안에서 반복할때까지 영원이 0이므로 무한 루프에 빠집니다. 무한 루프란 종료 조건이 없는 루프입니다.
  i=i+1

for

다른 Java나 C#, 그리고 거의 대부분의 프로그램 언어의 for문은 for 초기식, 조건식, 증감식으로 이루어진 반복문입니다.

그러나 Python의 경우는 반복문이기는 합니다만 초기식, 조건식, 증감식의 반복이 아닌 리스트나 튜플, 딕셔너리, 셋의 안의 원자값을 시퀀스대로 가져오는 반복문입니다.

list = [1,2,3]
tuple = ('a','b','c')
dic = {'a':1,'b':2,'c':3}
set = {'A','B','C'}

for i in list:
  print(i)

for i in tuple:
  print(i)

# 딕셔너리는 for문으로 돌리면 key값이 나옵니다.
for key in dic:
  print("key-" + key + " value-"+str(dic[key]))

# set은 시퀀스 데이터가 아니기 때문에 순서대로 값이 있는 것이 아닙니다.
for i in set:
  print(i)

break

위 while과 for의 반복문이 존재합니다만 이 반복 중에 조건문에 의해 루프(반복)을 탈출하는 것이 아닌 강제적으로 탈출하게 하는 키워드입니다.

for i in range(1,10,1):
  print(i)
  if i > 3:
    break

range 타입은 (초기값, 종료값, 증가값)으로 이루어진 데이터를 만드는 함수입니다.

여기서 1에서 10까지 1씩 증가하는 range값을 순서대로 1,2,3..으로 출력해서 10까지 나와야 정상입니다만 반복문 안에 if문이 있어 i의 값이 3을 넘으면 즉, 4가 되면 break로 반복을 탈출하라는 명령이 있습니다.

그러므로 출력은 1부터 4까지 출력이 됩니다.


여기서 break를 사용하면, for나 while에 else를 붙일 수가 있는데, 이 else문은 반복문 안에서 break를 만나지 않으면 실행되는 구문입니다.

(일반 프로그램과 많은 차이가 있네요..)

for i in range(1,10,1):
  print(i)
  if i > 10:
    break
else:
  print ("Break is not called.")

continue

반복문으로 루프(반복)을 돌리다 보면 특정값은 건너띄어야 할 경우가 있습니다. 건너띈다라는 표현이 조금 애매모호한데 이는 루프를 중단하는 것은 아니고 그대로 루프가 시작하는 곳으로 이동하는 의미입니다.

for i in range(1,10,1):
  #홀수의 경우는 루프를 건너띈다
  if i%2 == 1:
    continue
  print(i)
else :
  print ("Break is not called.")

결과는 홀수의 값만 나왔습니다.


들여쓰기

조금 설명의 순서가 맞지 않는데, 파이썬에서 이 들여쓰기는 매우 중요합니다.

다른 프로그램 언어의 경우는 제어문이나 함수, 클래스 등의 코드의 범위를 나타내는 역할을 합니다만, 파이썬에는 그런 것이 없습니다.

오로지 들여쓰기로 표현을 하는데, 예를 들면 if문의 영역을 나타내고 싶으면 같은 사이즈의 들여쓰기를 사용하면 됩니다.

if True:
  # 여기는 if의 영역입니다.
  print("if area")
#여기는 if의 영역이 아닙니다.
print("none area")

위 예제를 보면 두개의 print함수가 있습니다만 위의 print는 if의 영역이 되고 아래의 print는 if의 영역이 아닙니다.

이 구분은 첫번째 print함수 앞에 들여쓰기가 있는데 이를 통해 구분을 하게 됩니다.


들여쓰기는 가장 일반적인것이 스페이스 4칸 또는 스페이스 2칸, 탭키가 있습니다.

이 들여쓰기들은 서로 혼재해서 사용할 수 었습니다. 첫 들여쓰기를 탭키로 사용했는데, 다음은 스페이스 4칸을 사용하면 에러가 발생합니다.

위 메모장에서는 탭키와 스페이스 4칸은 비슷하게 보입니다.

그러나 실행은 에러가 발생합니다.

파이썬의 코드 표준인 pep8에서는 스페이스-4를 권장하고 있습니다.

링크 - https://www.python.org/dev/peps/pep-0008/


여기까지 Python에서 사용되는 제어문(if, while, for, break, continue)과 들여쓰기에 대한 설명이었습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.