[파이썬 강좌] #5 조건문(If) 사용하기


If문 활용하기

우리는 앞에서 텍스트를 입력받는 방법과 출력하는 방법을 배웠습니다.
그런데 숫자를 입력받을때 10이상의 수만 받고싶다면?
이럴때 if문을 사용하게 됩니다. IF는 말그대로 '만약' 이라는 뜻입니다.

 

if (조건식):
	실행문

if문은 위와 같이 사용합니다.

조건문의 식이 (숫자로는 1로 표현)이면 : (콜론) 아래의 실행문을 실행하게 되고

만약에 조건문의 식이 거짓(숫자로는 0으로 표현)이면 저 실행문은 실행하지 않고 그냥 무시하고 넘어가게 됩니다.

 

n = int(input())
if n < 10:
	print("10 이상의 숫자를 입력해주세요")

 앞서 말한대로 10이상의 숫자가 아니면 이렇게 메세지를 출력하게 할 수 있습니다.

 

코드를 한 줄씩 읽어보면 n에 숫자를 입력받고,

if문이 실행되면서 n < 10 이라는 조건식의 참 / 거짓 여부를 판단합니다.

 

n이 9와 10인 case에 따라 어떻게 처리하는지 알아보겠습니다.

 

만약에 9가 입력됬으면 9 < 10 , 9가 10보다 작나? 라는 뜻이므로 참(1)이 되게 됩니다.

if문 조건이 참이 되면 콜론과 Tab으로 구분한 아래의 식이 실행되게 됩니다. print() 함수가 실행되어서 10 이상의 숫자를 입력해주세요 가 출력되게 됩니다.

 

만약에 10이 입력되었으면 10 < 10, 10이 10보다 작나? 라는 뜻이 되는데 10은 10보다 작거나 같으므로 (10은 10보다 작지 않으므로) 거짓(0) 이 되게 됩니다. if문 조건이 거짓이 되면 아래의 조건식은 무시하고 실행하지 않습니다.

그러므로 프로그램을 켜도 아무것도 출력되지 않습니다.

 


 

 

" 현재 A씨가 택시를 타려고한다. 택시 요금은 5000원이다. 가진돈을 입력받고 그것보다 많거나 같을경우에는 택시를 탈 수 있고 그렇지 않으면 탈 수 없다. "

 

다음과 같은 조건을 프로그래밍으로 작성해보겠습니다.

money = int(input('현재 가지고있는 돈을 입력해주세요 : '))
if money >= 5000:
    print('택시를 탈 수 있습니다!')
else:
    print('택시를 탈 수 없습니다..')

입력 : 4000
>>> 택시를 탈 수 없습니다..

 

아까도 말씀드렸듯이 if 문을 사용하시에는 if (조건절) 형식으로 쓰고 끝에 : 기호를 붙여줍니다.
이곳에서 파이썬이 다른 프로그래밍 언어와 차별점이 보이는데 대개 프로그래밍 언어에서
if문의 대부분은 중괄호( { } )를 사용해서 묶습니다.

그런데 파이썬은 조건문 끝에 : 를 붙이고 다음줄에서 Tab으로 개행을 해줍니다.
(핵심은 : 과 tab입니다. 간혹가다가 if문을 쓰시고 tab으로 정확히 처리를 안해주시는 분들이 있으신데
이러면 if문이 정상적으로 작동하지 않습니다.)
그만큼 프로그램을 간편하게 표시할 수 있고, 읽어내기도 더욱 쉽습니다.

Visual Studio Code에서는 : 를 입력하고 엔터를 치면 알아서 개행을 해주는데, 간혹가다가 안되는 경우가 있으니 꼭 알아둡시다.

본론으로 돌아와서, 5000원보다 크다는 조건이 성립하면 print로 택시를 탈 수 있다고 얘기해주고 프로그램은 거기서 끝나게 되고, else는 if문이 성립하지 않을때 처리되어 택시를 탈 수 없다는 메세지가 출력된 후 프로그램이 끝나게 됩니다.

 

money = int(input('현재 가지고있는 돈을 입력해주세요 : '))
if money >= 5000:
    print('택시를 탈 수 있습니다!')
    total = 0
    if money > 5000:
        total = money - 5000
        print('남은 돈은', total , '원 입니다.')
    else:
        print('남은 돈은', total, '원 입니다.')
else:
    print('택시를 탈 수 없습니다..')

입력 : 6000
>>> 남은 돈은 1000 원 입니다.

택시요금을 냈으면 남은 돈도 표시해줘야겠죠?
조건은 5000원 보다 크거나 같을 경우 이므로, total 이라는 변수를 0으로 지정해서 하나만들어주고
5000원 보다는 많으면 현재 가진돈에서 5000원을 빼고, 만약 아니면, money는 결국 5000이라는
의미이므로 돈을 다써버리는것이니 0원을 출력해주면 되는것이겠습니다.

 

n = int(input("수를 입력하세요 : "))

if n < 10:
    print('10보다 작습니다')
elif 10 <= n <= 50:
    print('10과 50사이의 수입니다')
else:
    print('50보다 큰수입니다')

파이썬에서는 elif (조건)의 형식으로 조건을 추가해줄 수 있습니다.
if문에 포함되지않음 -> elif에서 포함되지않음 -> else
의 형태로 갑니다.

 

몫과 나머지 구하기

n = int(input('수를 입력해주세요 : '))
n2 = int(input('나눌 수를 입력해주세요 : '))
print(n,'을',n2,'로 나눴을때 몫은 : ', n // n2, '나머지는 : ', n % n2)

 

나누기 기호 = /
나머지 기호 = %
몫 기호 = //

 

이 연산자들을 이용해서 나누기 연산, 나머지(MOD) 연산, 몫 연산을 해낼 수 있습니다.

이것을 이용해 짝수와 홀수를 판별해보겠습니다.
(짝수의 정의 - 2로 나누어 나머지가 없이 떨어지는 수. 우수(偶數))

 

n = int(input())
if n % 2 == 0:
    print(n, '은 짝수 입니다')
else:
    print(n, '은 홀수 입니다')

입력 : 1897
>>> 1897 은 홀수 입니다

2로 나누어서 나누어 떨어지면 (0이면) 짝수이고,
아니라면 홀수입니다.

 

이러한 조건을 if문 흐름제어를 통해 case에 맞게 처리할 수 있습니다.

뭐가 같다고 판별할때는 == 기호를 써야합니다. = 만 단독으로 사용하여 비교하면
우리가 변수에 대입할때 사용하는 대입연산자의 의미가 되게 됩니다. 주의합시다. 

(예전에도 설명드렸듯이 수학의 등호가 아닙니다.)

 

여기서 n의 입력값을 숫자가 아니라 문자열을 넣으면 오류가 발생합니다. ex) "abcd" 를 입력시 오류 발생
이유는 int() 로 값을 변환할때는 문자열로 들어온 숫자 입력을 산술 연산이 가능한 정수형 숫자로 바꿔주는 것이지 "abcd" 라는 문자열에 대해선 변환해낼 수 없습니다. 프로그램 구현에 있어서 이러한 오류를 예외(exception) 라고 하는데 나중에 예외처리를 배우면 이러한 오류들에 대해서 대응해낼 수 있습니다.

COMMENT WRITE