4. 제어문 다루기 4.1 if문

C급 개발자와 함께하는 파이썬

4. 제어문 다루기

파이썬의 제어문은 다른 프로그래밍 언어와 마찬가지로 특정 조건에 의해 분기하는 if문 , 특정 조건에 만족할 때까지 반복하는 while문, 특정 횟수 만큼 반복하는 for문 등 단순히 일련의 순서로 명령문을 수행하는 것이 아니라 특정한 조건에 따른 loop 문을 수행하는것이다.


4.1 if문

다음과 같은 프로그램을 작성한다고 생각해보자.


버스를 탔는데 버스기사님이 몇살이냐고 묻는다 19세 이하는 청소년 요금이고 20세부터는 성인요금으로 내야한다.


  1. 버스를 타면 “나이가 몇살인가요?” 묻는다.

  2. 나이를 입력하고 엔터를 클릭하면

  3. 나이가 19세 이하면 청소년 요금입니다.


이러한 조건을 가지는 파이썬 프로그램을 만들어보도록 하자.


파이썬 코드는 다음과 같을 것이다.


위 코드는 키보드로부터 나이를 입력받아 age라는 변수에 할당합니다. 변수로 들어온 age는 문자열이기 때문에 int 숫자형으로 변환해서 숫자 19와 비교해서 19보다 작거나 같은경우 print 함수를 통해서 “학생입니다.”를 출력하도록 하고 있습니다.


특히 if ( int(age) ) : 이후에 “:”를 붙여주는것을 잘 보아야 할것입니다. 조건문의 뒤에는 “:” 입력하여 조건문이라는 것을 파이썬에게 알려주는 것입니다.  “:”기호는 그 다음 줄부터 새로운 블록이 시작된다는 것을 의미합니다. 조건문이 만족할 때 실행하는 부분 print( “학생입니다.” )은 if문의 하위에서 작동하기 때문에 앞에 공백을 주었습니다.

이 두가지를 염두에두고 동일하게 코딩에서 실행하면 아래와 같은 결과를 얻을수 있습니다.

 


나이를 15세로 입력하였더니 “학생입니다.”라는 메시지가 출력되었습니다.


그런데 프로그램이 너무 간단해 보입니다.


청소년인경우 청소년 요금을 내야하고 성인인경우 성인 요금을 내야합니다.


그러면 조건을 다음과 같이 바꿔보도록 하겠습니다.


  1. 버스를 타면 “나이가 몇살인가요?” 묻는다.

  2. 나이를 입력하고 엔터를 클릭하면

  3. 나이가 19세 이하면 청소년 요금입니다.

  4. 그렇지 않으면 (나이가 20세 이상이면) 성인 요금입니다.


의 조건으로 다시 프로그램을 만들어 보도록 하겠습니다.



아까 프로그램은 나이를 입력받아서 19세 이하인경우 학생입니다. 메시지를 출력하도록 하였습니다. 그런데 나이가 20세 이상인경우는 “성인입니다.”를 출력해야하므로 아까 출력된 조건이외의 다른 조건을 넣어야 합니다. if 문 조건에서 이외의 포괄적인 조건에 사용하는 조건문이  else 조건문입니다. else 조건문에는 if 문과 마찬가지로 뒤에 “:”를 입력하였습니다. 또한 print(“성인입니다.”) 조건에서 띄어쓰기를 해서 정상적으로 출력된것을 확인할수 있습니다.




이제 프로그램이 완성되었습니다.

성인인경우 “성인입니다.” 학생인 경우 “학생입니다.” 라는 출력을 하도록 하였습니다.

그런데 버스에서 할인이 또 존재하고 있습니다. 초등학생의 경우 학생과는 다른 요금을 내죠. 그럼. 어떻게 할까요?  알아보도록 하죠.


  1. 버스를 타면 “나이가 몇살인가요?” 묻는다.

  2. 나이를 입력하고 엔터를 클릭하면

  3. 나이가 19세 이하면 청소년 요금입니다.

  4. 19세 미만 중에 13세 이하는 초등학생 요금입니다.

  5. 그렇지 않으면 (나이가 20세 이상이면) 성인 요금입니다.


그럼 위의 프로그램은 어떻게 개발할지 고민해 보시기 바랍니다.


자 이제 시작 합니다.



위 코드는 입력을 받았는데 19세 이하에서 13세 이하인경우는 초등학생입니다를 출력하도록 되어있습니다.


실행결과도 12를 입력한경우 “초등학생입니다.”와 같이 값이 정상적으로 출력되는것을 알수 있습니다. 



하지만 위와같이 if문 안에 if문이 있는경우 가독성도 떨어지고 프로그램이 복잡해지는 경향이 있습니다. 프로그램은 최대한 간결하게 작성하고 구문안에 구문이 들어가지 않도록 작성한다. 이런경우 elif를 사용하면 소스도 간결해집니다.


어떻게 사용해야할지 고민해보기 바랍니다.

짜잔..



elif문은 위와 같이 사용하면 됩니다.

아래와 같이 정상적인 결과를 얻을수 있습니다.


댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.