Python 프로그래밍/Python 중급

파이썬 중급4 (elif - 조건문)

NOP(No Operation) 2020. 2. 23. 00:32

 파이썬 elif문 

 

 

파이썬 elif문

앞에서 배운 if와 else로만 구분하는 데는 한계가 있습니다.

 

실제로 밑에처럼 코드를 구현 시 오류가 발생할 수 있고요.

1
2
3
4
5
6
user = int(input("숫자를 입력해 주세요")) #input함수는 사용자에게 입력을 받습니다.
if user == 1#비교연산자 입니다.
    print("돈까스"#들여쓰기를 했으므로 user가 1일때만 실행 됩니다.
if user == 2#비교연산자 입니다.
    print("피자"#들여쓰기를 했으므로 user가 2일때만 실행 됩니다.
print("를 줍니다.")  #들여쓰기를 안했으므로 조건에 상관없이 실행 됩니다.
cs

위처럼 같은 변수를 if로 2번 검사 후 else까지 사용한다면 프로그래머가 원하는 방향으로

프로그램이 흘러가지 않을 가능성이 있습니다.

 

elif문은 이럴 때 사용하기 위해 고안된 방법이며

elif는 조건문 뒤에 오는 경우가 아닐 경우 다른 조건식이 필요로 할 때 사용합니다. 

 

정리하자면 위에서 사용한 문법은

user가 1인가 T/F로 실행 후 user가 2인가 T/F로 실행

한마디로 자원이 낭비됩니다.

 

반면 elif로 코드를 구현할 경우

user가 1이면 거기서 elif까지 넘어가지 않습니다.

 

 

elif문의 선언 법

elif문의 선언 법은 if문과 동일합니다.

다만 위에서 설명한 조건식이 아닌 경우에만 실행할 수 있다는 장점이 있습니다.

 

이번에는 코딩에 스토리를 첨가해 보겠습니다.

자판기에 처음 돈을 넣고

1번 콜라 가격:1000원

2번 사이다 가격:900원

3번 커피 가격:500원

4번 물 가격:300원

이러한 기능을 가진 자판기 프로그램을 만들어 보겠습니다.

 

elif문의 선언 법은 아래와 동일합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
show = """
1번 콜라 가격 : 1000원
2번 사이다 가격 : 900원
3번 커피 가격 : 500원
4번 물 가격 : 300원
""" #우리가 배운 문자열의 여러줄 선언 방법입니다.
error = "돈이 부족합니다." #돈이 부족한 경우 출력할 에러 메시지를 정의합니다.
print(show) #show를 출력합니다.
money = int(input("돈을 입력해 주세요 : ")) #사용자로 부터 돈을 입력 받습니다.
user = int(input("번호를 선택해 주세요 : ")) #사용자의 선택을 user에 저장합니다.
if user == 1#사용자가 1번을 고를 경우
    if money-1000 >= 0#돈이 1000원 이상 있는지 검사합니다.
        print("콜라를 뽑았습니다."#돈이 1000원 이상이라면 콜라를 배출합니다.
        money = money - 1000 #돈에서 1000원 뺍니다.
    else#돈이 1000원 미만일 경우
        print(error) #에러를 출력합니다.
elif user == 2#사용자가 2번을 선택한 경우
    if money-900 >= 0#돈이 900원 이상인지 검사합니다.
        print("사이다를 뽑았습니다."#돈이 900원 이상이라면 사이다를 배출합니다.
        money-=900 #위에와 같은 의미이지만 더 빠르게 표시하는 방법입니다. money = money - 900과 동일합니다.
    else#돈이 900원 미만일 경우 
        print(error) #에러를 출력합니다.
elif user == 3# 사용자가 3번을 선택한 경우
    if money-500 >= 0#돈이 500원 이상인지 검사합니다.
        print("커피를 뽑았습니다."#돈이 500원 보다 많다면 커피를 배출 합니다.
        money-=500 #money = money - 500과 동일합니다.
    else#돈이 500미만일 경우
        print(error) #에러를 출력합니다.
elif user == 4#사용자가 4번을 선택한 경우
    if money-300 >= 0#돈이 300원 이상인지 검사합니다.
        print("물을 뽑았습니다."#돈이 300 이상이라면 물을 배출합니다. 
        money = money - 300 #money = money - 300과 동일합니다.
    else#돈이 300원 미만일 경우
        print(error) #에러를 출력합니다.
else#사용자가 1,2,3,4 이외 다른 입력을 할 경우
    print("잘못된 입력을 하셨습니다."#잘못된 입력을 했다고 출력합니다.
print("남은 돈 : {0}".format(money)) #남은 돈을 출력합니다.
 
cs

12 elif문.py

위와 같은 코드 하나로 if, elif, else를 모두 사용했습니다.

if문 안에 if문을 중첩시키는 것도 위에 코드의 예를 통해 알 수 있습니다.

 

파이썬의 if와 else는 들여 쓰기로 구분하며 같은 칸에 있는 if, elif, else끼리 상호 작용하고

다른 칸에 있는 if는 그 if와 같은 들여 쓰기 크기만큼의 if, elif, else끼리 상호작용 합니다.

 

※요약하자면 if, elif, else는 같은 칸끼리 상호 작용합니다.

 

 

if문의 논리 연산자

if문도 bool논리 연산자에서 설명드린 and, or, not이 사용 가능합니다.

No. 이름 설명 핵심!
1. and 둘다 참(True)이면 참(True)를 리턴한다. 둘 다 참이면 참
2. or 하나라도 참이면(True) 참(True)를 리턴한다. 둘 중 하나만 참이면 참
3. not 들어온 불 자료형을 반대로 만들어 리턴한다. 반대로

사용법은 if문의 사용법을 생각해보시면 됩니다.

if문은 뒤에 있는 조건식이 참이 될 때 코드를 실행합니다.

 

그럼 여기서 저기 핵심 부분만 보고 이해하시면 됩니다.

1
2
3
4
5
6
7
8
9
10
money = 5000
coffee = 5000
if money==5000 and coffee==5000#money와 coffee의 조건식이 모두 참일 경우 실행 됩니다.
    print("커피를 사먹고 남은돈 : 0원")
if money==5001 or True: #money가 5001원이 아닌데도 or연산으로 둘중 하나가 참이니 실행 됩니다.
    print("돈이 5001원이 아니라도 실행되넹?")
if not money==5000#money가 5000원이라 True지만 앞에 not이 붙어서 False로 실행이 되지 않습니다.
    print("실행불가!")
else#if문이 여러번 사용된 경우 바로 위에있는 if문을 기준으로 else가 실행됩니다.
    print("위의 경우가 참이 아니기 때문에 실행!")
cs

13 if문 논리 연산자.py

이렇게 해서 if문을 완벽하게 마치겠습니다.

이해가 어려운 부분은 혼자서 입력과 출력을 반복하면서 이해해주시거나

댓글로 질문하시면 되겠습니다.

 

 

 

 

요약

1.elif와 if의 차이점은 elif는 위에의 조건식이 만족이 아닐 경우 실행된다.

2.if문도 논리 연산자가 사용 가능하다.

 

숙제

1. 논리 연산자를 잘 조합해서 위의 자판기 코드를 조금 더 줄여 주세요.

 

 

 

다음 시간에는 반복문인 while문을 알아보겠습니다.