본문 바로가기
IT/파이썬 기초 (Python)

#017 파이썬 기초 - 흐름 제어문 for, break, continue

by DoitSQL 2023. 2. 27.
728x90

Python기초강의강좌, 파이썬기초강의강좌

파이썬 기초 - 흐름 제어문 for, break, continue   

for문
for 문

지난 시간에 이어 이번 시간에는 흐름 제어 for 루프, break 문, continue 문에 대해서 알아보겠습니다.


for 루프   

for..in 문은 객체의 열거형(Sequence)을 따라서 반복하여 실행할 때 사용되는 
파이썬에 내장된 또 하나의 반복문으로, 열거형에 포함된 각 항목을 하나씩 거쳐가며 실행합니다. 
열거형에 대해서는 이후에 좀 더 자세히 다룰 것입니다. 
일단 여기서는, 열거형이란 여러 항목이 나열된 어떤 목록을 의미한다고 생각하시기 바랍니다.

예제 (파이참에서 'for.py'로 저장하세요):   

# Filename : for.py
for i in range(1, 5):
    print(i)
else:
    print('The for loop is over')

▶ 실행결과 :

C:\Anaconda\envs\study_39\python.exe E:\python_study\for.py 
1
2
3
4
The for loop is over

▶ 동작 원리 :
이 프로그램은 화면상에 숫자의 나열을 출력합니다.
파이썬에 내장된 range 함수를 통해 숫자의 나열을 생성합니다.

여기서는 range 함수에 두 개의 숫자를 넣어 주었습니다.  
그러면 이 함수는 첫 번째 숫자 이상, 그리고 두 번째 숫자 미만까지의 숫자 목록(리스트)을 반환합니다.
(리스트는 자료 구조 챕터에서 좀 더 자세히 설명할 것입니다)
 
예를 들어, range(1,5)는 리스트 [1, 2, 3, 4]를 반환합니다. 
기본적으로, range는 1씩 증가하는 숫자의 리스트를 반환합니다. 
그러나 range에 세 번째 숫자를 입력하면, 이 세 번째 숫자만큼씩 증가하는 숫자들의 리스트를 얻을 수 있습니다. 
예를 들어, range(1,5,2)는 [1,3]을 반환합니다. 
반환되는 리스트는 두 번째 숫자 미만까지 반환되며, 이하까지 반환되는 것이 아니라는 점을 꼭 기억하세요.

range 함수는 호출될 때 해당 범위 내의 모든 숫자를 한 번에 생성하여 반환해 주기 때문에, 
매우 큰 숫자 범위를 지정해 주면 시간이 오래 걸릴 수 있습니다. 
따라서 매우 큰 범위의 숫자를 다룰 때는 한번에 하나씩 숫자를 생성하도록 하는 쪽이 낫습니다. 

위 예제의 for 루프는 range 함수에서 반환된 리스트를 따라 반복하여 실행됩니다. 
즉, for i in range(1,5)는 for i in [1, 2, 3, 4]와 같습니다. 
이것은 리스트에 들어 있는 각각의 숫자 (각 숫자는 곧 객체이기도 합니다)를 한 번에 하나씩 i에 대입하고, 
이렇게 대입된 각 i 값을 이용하여 for에 딸린 블록을 실행합니다. 
이 경우, for 블록에서 하는 일은 단순히 i 값을 화면에 출력해 주는 것입니다.

또한, 추가로 else 절을 포함시켜 줄 수 있습니다. 
이것이 포함되면, break 문으로 루프를 강제로 빠져나오지 않는 한 루프를 다 돌고 난 뒤에는 이 절이 항상 실행되게 됩니다.

for..in 루프는 어떤 종류의 열거형 자료형과도 함께 사용될 수 있습니다. 
여기서는 range라는 내장 함수를 통해 숫자 리스트를 생성하여 사용하였습니다만, 
일반적으로는 아무 종류의 객체를 담고 있는 아무 열거형이나 사용이 가능합니다! 
추후에 이에 대해 좀 더 자세히 다뤄 보겠습니다.

▶ C/C++/Java/C# 프로그래머를 위한 주석
파이썬의 for 루프는 C/C++에서 제공하는 for 루프와는 근본적으로 다릅니다. 
파이썬의 for는 차라리 C#의 foreach 루프와 비슷하며, 
Java 1.5의 'for (int i : IntArray)'와 비슷합니다.
C/C++처럼 'for (int i = 0; i < 5; i)'와 같이 사용하고 싶은 경우, 
파이썬에서는 단순히 'for i in range(0,5)'라고 입력하기만 하면 됩니다. 
보시다시피, 파이썬의 for 루프는 더 단순하며, 더 보기 좋고 오류가 발생하기도 어렵습니다.


break 문   

break 문은 루프 문을 강제로 빠져나올 때, 즉 아직 루프 조건이 'False'가 되지 않았거나 
열거형의 끝까지 루프가 도달하지 않았을 경우에 루프 문의 실행을 강제로 정지시키고 싶을 때 사용됩니다.

중요한 점은 만약 여러분이 break 문을 써서 for 루프나 while 루프를 빠져나왔을 경우, 
루프에 딸린 else 블록은 실행되지 않습니다.

예제 (파이참에서 'break.py'로 저장하세요):   

# Filename : break.py
while True:
    s = input('Enter something : ')
    if s == 'quit':
        break
    print('Length of the string is', len(s))
print('Done')

▶ 실행결과 :

C:\Anaconda\envs\study_39\python.exe E:\python_study\break.py 
Enter something : python
Length of the string is 6
Enter something : anaconda
Length of the string is 8
Enter something : 홍길동
Length of the string is 3
Enter something : sql
Length of the string is 3
Enter something : quit
Done

▶ 동작 원리 :
이 프로그램에서는 사용자의 입력을 반복해서 받고, 입력받은 문자열의 길이를 출력합니다.
다만 사용자가 입력한 문자열이 'quit' 일 경우, 
'break'문으로 루프를 빠져나와 프로그램을 정지하도록 특별한 조건을 넣어 주었습니다.
입력받은 문자열의 길이는 내장함수 len을 이용하여 계산할 수 있습니다.

break 문은 for 루프 내에서도 이용될 수 있음을 기억하세요.


continue 문   

continue 문은 현재 실행 중인 루프 블록의 나머지 명령문들을 실행하지 않고 
곧바로 다음 루프로 넘어가도록 합니다.
skip이라고 생각하시면 됩니다.

 

예제 (파이참에서 'continue.py'로 저장하세요):   

# Filename : continue.py
while True:
    s = input('Enter something : ')
    if s == 'quit':
        break
    if len(s) < 3:
        print('Too small')
        continue
    print('Input is of sufficient length :', s)
    # Do other kinds of processing here...

▶ 실행결과 :

C:\Anaconda\envs\study_39\python.exe E:\python_study\continue.py 
Enter something : abc
Input is of sufficient length : abc
Enter something : a
Too small
Enter something : b
Too small
Enter something : abc
Input is of sufficient length : abc
Enter something : quit

▶ 동작 원리 :
이 프로그램에서는 사용자로부터 입력을 받습니다만, 
입력받은 문자열의 길이가 적어도 3 이상인 경우에만 문자열을 처리합니다. 
즉, 내장함수 len을 통해 입력받은 문자열의 길이를 알아낸 후 그 길이가 3보다 작으면, 
continue 문을 이용하여 그 이하의 명령문을 실행하지 않고 다음 루프로 넘어가도록 합니다. 
입력받은 문자열의 길이가 3 이상일 경우에만 그 이하의 명령문이 실행되고, 지정된 작업이 실행됩니다.

continue 문은 for 루프 내에서도 이용될 수 있음을 기억하세요.


지금까지 if , while , for 세 종류의 흐름 제어문에 대해 배워 보았습니다. 
또한 그와 같이 이용할 수 있는 'break'와 'continue'문에 대해서도 배웠습니다. 
이 명령문들은 파이썬에서 가장 많이 사용되는 명령문들에 속해 있으며, 
따라서 이 명령문들에 친숙해지는 것은 필수입니다.

다음시간에는 함수를 만들고 사용하는 방법에 대해 배워 보겠습니다.


Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글