본문 바로가기
Python/왕초보를 위한 파이썬

3.6. 연습문제

by 가므자 2012. 4. 3.

짜잔~! 반갑습니다. 여러분~. 제 강좌 홈페이지를 찾아주셔서 정말 기뻐요. 게시판에 올리시는 글을 보는 것이 낙이랍니다. 전 요즘 학교 시험공부랑 과제물, 회사일로 조금 바쁘답니다. (마음만 바쁘지 TV 보고, 잠 잘 자고, 딴 짓도 많이 한답니다… ^^;)

오늘은 구구단을 준비했습니다. 구구단은 어느 언어든 프로그래밍 배울 때 빠지지 않는 약방의 감초입니다. 저는 초등학교 2학년 때 그네 타면서 구구단을 외웠던 기억이 나는데, 지금은 몇 학년 때 배우는지 궁금하군요. 저는 왠지 8단이 어렵더군요. 어머니는 뭐가 어렵냐고 하셨지만… 그래서 산수 시간에 곱셈문제를 풀 때는 가능하면 덧셈으로 바꿔서 풀곤했지요.

2 * 1 = 2
2 * 2 = 4
…        
9 * 9 = 81

자, 이렇게 구구단을 2단부터 9단까지 계산해서 출력하는 프로그램을 짜보세요. 지금까지 배운 내용만 제대로 이해하시면 충분히 하실 수 있답니다.

음, 힘드십니까…
모르겠다고 하는 분이 정상입니다…
할 수 있다고 하는 분은 아마 예전에 비슷한 것을 배웠거나 머리가 좋은 분일 거예요.

그럼 정상인을 위해서 힌트를 드리겠습니다. 사실 힌트랄 건 없구요, 전체를 한 번에 만들기 힘들면 조금씩 나눠서 해보시라는 겁니다.

우선 2단만 똑같이 만들어보세요. 이 강좌는 더 이상 보지 마시고 지금까지 배웠던 것을 참고해서 만들어 보세요.

다들 해보셨나요? 해보신 분은 제가 짠 것과 비교를 해보세요.

>>> i = 1
>>> while i <= 9:
...   print 2, ' * ', i, ' = ', 2*i
...   i = i + 1
...

처음에 변수 i를 선언하면서 값으로 1을 넣어줬죠. 그리고 while 문에서 그 i 값을 1씩 증가시켜가면서 2단을 차례대로 출력했습니다.
while 안에 들어있는 print 문에서는 숫자 2, 문자열 ‘ * ‘(공백 별표 공백), 변수 i, 문자열 ‘ = ‘(공백 등호 공백), 그 다음에 2 곱하기 i라는 수식을 쉼표로 구분해서 차례로 넣어줬습니다.
여러분이 만드신 것과 비슷한가요? 꼭 비슷할 필요는 없습니다.

이번엔 이 예제를 좀 더 그럴 듯하게 고쳐보도록 하겠습니다. 구구단을 계산하는 함수를 만들어 보려구요. 함수에 2를 넣으면 2단을 출력하고, 5를 넣으면 5단을 출력하도록요. 여러분은 직접 만든 코드를 이용해서 함수를 만들어 보세요.

>>> def multi(a):
...   i = 1
...   while i <= 9:
...     print a, ' * ', i, ' = ', a*i
...     i = i + 1
...

아까 거랑 거의 비슷한데 코드를 전부 함수에 집어넣었죠? 그래도 훨씬 폼 납니다. 한번 돌려보세요. 3단 나와라 뚝딱!

>>> multi( 3 )

결과를 확인해 보셨나요? 쓸 만 하죠? 이제 처음 문제도 풀 수 있을 것 같지 않나요? 2단부터 9단까지 while 문으로 돌리고 그 사이에 방금 우리가 만들었던 함수를 집어넣으면 되겠죠? 다시 한 번 도전해보시기 바랍니다.

참고로 프로그램을 잘못 짜서 while 문이 계속 반복되면서 프로그램이 끝나지 않을 때는 <Ctrl>+<C>를 누르시면 됩니다. 그럼 2단부터 9단까지 풀버전을 만들어 보세요.

잘 되셨나요? 축하합니다.

사실 지금과 같은 경우에 굳이 함수를 만들 필요는 없었지요. 함수를 이용하지 않고 while문 안에 또 while 문을 집어넣어도 된답니다. 함수에 대해 복습도 할 겸 이해하기 쉽도록 만든 것이지요. while 문을 두 번 쓰는 방법은 직접 해 보시면 좋겠습니다. 제가 코드를 보여드리지 않아도 잘 하시리라고 생각합니다.

그럼 모두 즐거운 하루 되시구요, 저는 다음 이 시간에…


이 글도 읽어보세요.
http://wikidocs.net/read/726

출처 : wikidocs 왕초보를 위한 파이썬

'Python > 왕초보를 위한 파이썬' 카테고리의 다른 글

4.2. 문자열과 목록  (0) 2012.04.03
4.1. 자료형  (0) 2012.04.03
3.5. 재귀적 용법  (0) 2012.04.03
3.4. 축약함수(Lambda)  (0) 2012.04.03
3.3. 값을 돌려주기  (0) 2012.04.03

댓글