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

#015 파이썬 기초 - 흐름 제어문 if

by DoitSQL 2023. 2. 25.
728x90

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

파이썬 기초 - 흐름 제어문 if   

흐름제어

지금까지 우리가 본 파이썬 프로그램들은 전부 맨 윗줄부터 차례대로 실행되기만 하는 것들 뿐이었습니다. 
이러한 실행 흐름을 바꿀 수 있다면 어떨까요? 
예를 들어, 프로그램이 현재 시간에 따라 'Good Morning' 혹은 'Good Evening’을 출력하는 

결정을 내리도록 할 수 있게 하면 좋지 않을까요?

예상하셨겠지만, 흐름 제어문을 이용하면 이러한 프로그램을 제작할 수 있습니다. 
파이썬에서는 if, for, while이라는 세 종류의 흐름 제어문을 사용할 수 있습니다.

 

이번 시간에는 if 문을 알아보겠습니다.


 if 문   

if 문은 조건을 판별할 때 사용됩니다. 
if (만약) 조건이 참이라면, if 블록의 명령문을 실행하며
else(아니면) else 블록의 명령문을 실행합니다. 
이때 else 조건절은 생략이 가능합니다.

 

예제 (if.py로 저장하세요) : 파이참에서 실행해 보세요. 들여 쓰기는 4칸, 파이참에서 탭이 4칸입니다.

# Filename : ip.py
number = 23
guess = int(input("Enter an integer : "))
if guess == number:
    # New block starts here
    print('Congratulations, you guessed it.')
    print('(but you do not win any prizes!)')
    # New block ends here
elif guess < number:
    # Another block
    print('No, it is a little higher than that')
    # You can do whatever you want in a block...
else:
    print('No, it is a little lower than that')
    # you must have guessed > number to reach here
print('Done')
# This last statement is always executed,
# after the if statement is executed.

 실행결과  

C:\Anaconda\envs\study_39\python.exe E:\python_study\if.py 
Enter an integer : 50
No, it is a little lower than that
Done

C:\Anaconda\envs\study_39\python.exe E:\python_study\if.py 
Enter an integer : 22
No, it is a little higher than that
Done

C:\Anaconda\envs\study_39\python.exe E:\python_study\if.py 
Enter an integer : 23
Congratulations, you guessed it.
(but you do not win any prizes!)
Done

● 동작 원리 ●
이 프로그램에서는, 사용자로부터 숫자를 입력받아 그 숫자가 프로그램에 지정된 숫자와 같은지 확인합니다. 

먼저 number 변수에 원하는 숫자를 넣습니다. 여기서는 23입니다. 
그리고, input() 함수를 통해 사용자로부터 입력을 받습니다. 

여기서 함수란 재사용 가능한 프로그램 조각을 의미합니다. 
다음 장에서, 함수에 대해 좀 더 자세히 배울 것입니다.

파이썬에 내장된 input 함수에 문자열을 넣어 주면 화면에 이 문자열이 출력되며
 사용자의 입력을 기다리게 됩니다

이제 사용자가 무엇인가를 입력하고 enter 키를 누르면,
input() 함수는 사용자가 입력한 것을 문자열의 형태로 반환해 줍니다. 
이제 int를 이용하여 이것을 정수형으로 변환한 뒤, 그 값을 변수 `guess`에 대입합니다. 

사실 여기에서 사용된 'int'는 클래스라고 불리는 것입니다만, 
일단 여기서는 이것이 문자열을 숫자형으로 변환해 준다는 것만 기억하셔도 됩니다.
(다만 이때 사용된 문자열은 올바른 숫자 형태여야 합니다).

다음으로, 사용자가 입력한 숫자와 우리가 입력한 숫자를 비교합니다. 
만약 이 두 숫자가 같으면, 성공했다는 메시지를 화면에 출력합니다. 
이때 들여 쓰기를 이용하여 어디부터 어디까지가 이 블록에 해당하는지를 표시했다는 것을 확인하세요. 

이러한 이유로 파이썬에서 들여 쓰기는 굉장히 중요합니다. 
앞서 말씀드렸듯이 여러분이 "일관성 있게 들여 쓰는" 습관에 익숙해져 있었으면 좋겠습니다.
이미 그렇게 하고 계시지요?

또한 if 문의 뒷부분에 콜론( : )이 붙어 있는 것을 확인하세요. 
콜론은 그다음 줄부터 새로운 블록이 시작된다는 것을 의미합니다.

이제, 사용자가 입력한 숫자가 우리가 고른 숫자에 비해 작다면, 
사용자에게 좀 더 큰 숫자를 입력하라고 알려 줍니다. 
여기에 사용된 것은 elif 절인데, 이것은 두 개의 if 문을 중첩해서 사용해야 할 경우 
(즉 'if else'를 쓰고 'else'밑에 또다시 'if else'를 써야 될 경우) 
이것을 `if - elif - else`로 한 번에 줄여서 쓸 수 있게 해 주는 것입니다. 
즉 'elif'는 프로그래밍을 좀 더 쉽게 해 주고 더 많은 들여 쓰기를 해야 하는 수고도 줄여 줍니다.

'elif'와 'else' 문을 사용할 경우, 논리적 명령행의 마지막에는 항상 콜론이 붙어 있어야 하며
그다음 줄에는 다른 들여 쓰기 단계로 시작되는 새로운 명령문 블록이 시작되어야 합니다.

흐름 제어 또한 'if'문의 if - block안에 또 다른 'if'문을 넣고, 
또 넣고 하는 식으로 작성할 수 도 있습니다. 이 경우 이것을 중첩된 if문이라 부릅니다.
elif와 else 절은 생략이 가능합니다.

 

최소한의 올바른 if 문 사용법은 다음과 같습니다.

if True:
    print('Yes, it is true')

if - elif - else 문의 실행이 끝나면, 파이썬은 if 문을 담고 있는 블록의 
다음 줄부터 실행을 재개합니다. 

위 예제의 경우 그 블록은 최상위 블록 (프로그램이 실행된 시점의 블록)이 되며, 
따라서 그다음에 실행될 명령문은 print('Done')이 됩니다. 
그 이후는 프로그램의 끝이므로 실행이 종료되게 됩니다.


지금 여러분이 본 것은 굉장히 간단한 프로그램이지만, 
이를 통해서도 충분히 많은 것들에 대해 이야기했습니다. 
하지만 이 모든 내용은 상당히 직관적입니다 
(만약 여러분이 C/C++ 경험이 있다면 훨씬 더 쉽다고 느껴지기까지 할 것입니다). 

지금 당장은 여러분이 이 모든 내용을 익혀야 하겠지만,
몇 번 연습을 해보고 나면 아마 좀 더 편하게 받아들여질 것이며 곧 '자연스럽게' 여기게 될 것입니다.

C/C++ 프로그래머를 위한 주석
파이썬에는 switch 문이 없습니다. 대신 if.. elif.. else 문을 이용하여야 합니다. 


이번 시간에는 if문을 사용해 흐름 제어를 하는 방법을 배웠습니다.

감사합니다.

 

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

 

728x90

댓글