ko ko ko en en en ko ko cs zh ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko en ko ko ko ko ko ko ko ko ko en ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko fr ko ko ko ko fr ko ko ko en en ko en zh en en
파이썬 코딩 도장: 15.1 elif 사용하기
◀ 14.7 심사문제: 합격 여부 판단하기15.2 퀴즈 ▶︎
Unit 15. elif를 사용하여 여러 방향으로 분기하기
프로그램을 만들다 보면 참, 거짓으로만 분기하는 것은 한계가 있습니다. 실제로는 두 가지 이상의 다양한 상황이 발생하죠.
여러 가지 상황을 처리하는 대표적인 예는 음료수 자판기가 있습니다.
▼ 그림 15-1 음료수 자판기
자판기 안에는 각각 다른 종류의 음료수가 들어있고, 버튼을 누르면 해당 버튼에 해당하는 음료수가 나옵니다. 이걸 elif로 만들면 다음과 같은 모양이 됩니다.
if 콜라 버튼을 눌렀다면:     콜라를 내보냄 elif 사이다 버튼을 눌렀다면:     사이다를 내보냄 elif 환타 버튼을 눌렀다면:     환타를 내보냄: else:     제공하지 않는 메뉴
즉, elif는 조건식을 여러 개 지정하여 각 조건 마다 다른 코드를 실행할 수 있습니다.
elif는 else인 상태에서 조건식을 지정할 때 사용하며 else if라는 뜻입니다. 물론 if, else와 마찬가지로 조건식 끝에 :(콜론)을 붙여야 하고, elif 단독으로 사용할 수 없습니다.
if 조건식:      코드1 elif 조건식:      코드2
그럼 다음과 같이 들여쓰기를 맞춰서 파이썬 셸에 코드를 입력해보세요.
이렇게 하면 처음 if에서 x가 10인지 검사한 뒤 참이면 '10입니다.'를 출력하고, 거짓이면 그 다음에 오는 elif에서 x가 20인지 검사합니다. 만약 elif의 조건식이 참이면 '20입니다.'를 출력하고, 거짓이면 아무것도 출력하지 않습니다. 여기서는 x가 20이라 elif의 조건식에 만족하므로 '20입니다'가 출력됩니다.
그러면 x가 10도 아니고 20도 아니라면 나머지는 어떻게 처리할까요? 이때는 if, elif, else를 모두 사용하면 됩니다.
15.1.1  if, elif, else를 모두 사용하기
elif와 else는 단독으로 사용할 수 없으며 if, else 형태로 사용하거나, if, elif, else 형태로 사용합니다. 이번에는 if, elif, else를 모두 사용해보겠습니다.
if 조건식:     코드1 elif 조건식:     코드2 else:     코드3
다음 내용을 IDLE의 소스 코드 편집 창에 입력한 뒤 실행해보세요(파이썬 셸에서 사용하는 방법은 많이 해보았으니 생략하겠습니다).
x = 30   if x == 10:             # x가 10일 때     print('10입니다.') elif x == 20:           # x가 20일 때     print('20입니다.') else:                   # 앞의 조건식에 모두 만족하지 않을 때     print('10도 20도 아닙니다.')
이렇게 하면 if, elif의 조건식이 모두 거짓일 때만 else의 코드가 실행됩니다. 여기서는 x가 30이라 if, elif의 조건식에 모두 만족하지 않습니다. 따라서 마지막 else의 '10도 20도 아닙니다.'가 출력됩니다.
참고로 if와 else는 한 번만 사용할 수 있지만, elif는 여러 번 사용할 수 있습니다. 그리고 elif의 들여쓰기 규칙은 if, else와 같으므로 따로 설명하지 않겠습니다.
만약 elif 앞에 else가 오면 잘못된 문법이므로 주의해야 합니다.
if x == 10:     print('10입니다.') else:     print('10도 20도 아닙니다.') elif x == 20:    # elif 앞에 else가 오면 잘못된 문법     print('20입니다.')
15.1.2  음료수 자판기 만들기
이제 음료수 자판기를 만들어봅시다. 버튼 1번은 '콜라', 2번은 '사이다', 3번은 '환타'이고 각 버튼에 따라 음료수 이름을 출력한다고 하죠(1, 2, 3이외의 숫자는 '제공하지 않는 메뉴' 출력). 코드를 보기 전에 어떻게 만들면 될 지 머리 속으로 한 번 생각해보세요.
button = int(input())   if button == 1:     print('콜라') elif button == 2:     print('사이다') elif button == 3:     print('환타') else:     print('제공하지 않는 메뉴')
실제 자판기에서는 버튼 개수가 정해져 있어서 1, 2, 3번 이외의 버튼이 입력될 가능성이 거의 없습니다. 하지만 프로그램에서는 예상치 못한 값이 입력되는 경우가 자주 있습니다(예를 들어 숫자만 입력하라고 했는데 사용자가 문자열을 입력한다든지…). 따라서 잘못된 값에 대한 처리는 꼭 해주는 것이 좋습니다.
지금까지 if, elif, else로 조건에 따라 분기하는 방법을 배웠습니다. 여기서는 if, elif, else 끝에 :(콜론)을 붙인다는 점과 다음 줄에서는 반드시 들여쓰기를 한다는 점이 중요합니다.
◀ 14.7 심사문제: 합격 여부 판단하기15.2 퀴즈 ▶︎
Unit 1. 소프트웨어 교육과 파이썬
Unit 2. 파이썬 설치하기
Unit 3. Hello, world!로 시작하기
Unit 4. 기본 문법 알아보기
Unit 5. 숫자 계산하기
Unit 6. 변수와 입력 사용하기
Unit 7. 출력 방법 알아보기
Unit 8. 불과 비교, 논리 연산자 알아보기
Unit 9. 문자열 사용하기
Unit 10. 리스트와 튜플 사용하기
Unit 11. 시퀀스 자료형 활용하기
Unit 12. 딕셔너리 사용하기
Unit 13. if 조건문으로 특정 조건일 때 코드 실행하기
Unit 14. else를 사용하여 두 방향으로 분기하기
Unit 15. elif를 사용하여 여러 방향으로 분기하기
15.3 연습문제: if, elif, else 모두 사용하기
15.4 심사문제: 교통카드 시스템 만들기
Unit 16. for 반복문으로 Hello, world! 100번 출력하기
Unit 17. while 반복문으로 Hello, world! 100번 출력하기
Unit 18. break, continue로 반복문 제어하기
Unit 19. 계단식으로 별 출력하기
Unit 20. FizzBuzz 문제
Unit 21. 터틀 그래픽스로 그림 그리기
Unit 22. 리스트와 튜플 응용하기
Unit 23. 2차원 리스트 사용하기
Unit 24. 문자열 응용하기
Unit 25. 딕셔너리 응용하기
Unit 26. 세트 사용하기
Unit 27. 파일 사용하기
Unit 28. 회문 판별과 N-gram 만들기
Unit 29. 함수 사용하기
Unit 30. 함수에서 위치 인수와 키워드 인수 사용하기
Unit 31. 함수에서 재귀호출 사용하기
Unit 32. 람다 표현식 사용하기
Unit 33. 클로저 사용하기
Unit 34. 클래스 사용하기
Unit 35. 클래스 속성과 정적, 클래스 메서드 사용하기
Unit 36. 클래스 상속 사용하기
Unit 37. 두 점 사이의 거리 구하기
Unit 38. 예외 처리 사용하기
Unit 39. 이터레이터 사용하기
Unit 40. 제너레이터 사용하기
Unit 41. 코루틴 사용하기
Unit 42. 데코레이터 사용하기
Unit 43. 정규표현식 사용하기
Unit 44. 모듈과 패키지 사용하기
Unit 45. 모듈과 패키지 만들기
Unit 46. 실전예제: 웹의 데이터로 그래프 그리기
C 언어 코딩 도장
- 이 사이트에 실린 모든 내용, 디자인, 이미지, 편집 구성의 저작권은 (주)도서출판 길벗과 지은이에게 있습니다.
- 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다.
- 책의 내용을 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다.
- 링크, SNS 공유는 허용합니다.
서울시 마포구 서교동 월드컵로 10길 56 (서울시 마포구 서교동 467-9)
Copyright © 2016-2021 Coding Dojang