프로그램을 막 시작하려는 사람이 처음 느끼는 벽은 아마도 다음과 같을 것이다.
“문법도 어느 정도 알겠고, 책의 내용도 대부분 다 이해하는데, 이러한 지식을 바탕으로 내가 도대체 어떤 프로그램을 만들 수 있을까?”
이럴 때는 무턱대고 “어떤 프로그램을 짜야지”라는 생각보다는 다른 사람들의 프로그램 파일들을 구경하고 분석하는데서 시작하는 것이 좋다. 그러면서 다른 사람들의 생각도 읽을 수 있고 거기에 더해 뭔가 새로운 아이디어가 떠오르기도 하는 것이다. 하지만 여기서 가장 중요한 것은 자신의 수준에 맞는 소스를 찾는 일이다. 그래서 이 장에서는 아주 쉬운 예제부터 시작해서 차츰 어려워지는 실용적인 예제까지를 다루려고 노력하였다. 이것들을 어떻게 활용하는가는 독자의 몫이다.
이곳에 있는 예제들은 모두 필자가 만든 것인데, 대부분 다른 사람들이 만든 소스를 보고 아이디어를 얻은 것이 많다. 필자가 만든 예제들을 쉽게 이해하기 위해서는 필자가 프로그램을 만들 때 어떤 생각을 하면서 만들었는지 독자들이 알면 좋을 것이다. 그래서 여기에서는 필자의 프로그래밍 스타일을 잠시 소개하겠다
필자는 이제 막 프로그래밍을 해보려는 사람에게 구구단 프로그램을 짜보라고 요구했던 적이 있었다. 생각보다 쉬운 퀴즈였는데 의외로 파이썬 문법도 다 공부한 사람이 프로그램을 어떻게 만들어야 할 지 갈피를 못잡고 있다는 사실은 놀라운 일이었다. 그래서 필자는 다음과 같은 해결책을 알려 주었다.
“입력과 출력”을 생각하라는 것이었다. 우선 구구단 중 먼저 2단을 만들어야 하니까 2를 입력값으로 주었을 때 원하는 출력 값을 생각해 보라는 힌트였다. 그래도 그림이 그려지지 않는 듯 보여 직접 연습장에 그려주면서 설명을 해 주었다. 그것은 다음과 같았다. 이것이 필자가 프로그래밍을 하는 방식이다. 독자들도 함께 따라해 보기를 바란다.
먼저 에디터를 열고 다음과 같이 쓴다. 즉, GuGu라는 함수에 2라는 입력을 주면 result라는 결과 값을 준다.
result = GuGu(2)
그렇다면 의외로 생각이 가볍게 좁혀 지는 것을 느낄 수 있을 것이다. 일단 함수를 다음과 같이 만들어 보자.
def GuGu(n):
print n
위와 같은 함수를 만들고 GuGu(2)처럼 하면 2라는 값을 출력하게 된다. 즉 입력으로 2를 받는 것을 확인을 하는 것이다.
다음에는 결과값을 담을 리스트를 하나 생성하자.
def GuGu(n):
result = []
다음에는 result에 2, 4, 6,,, 18을 어떻게 넣어 주어야 할지 생각해 보자. 필자는 다음과 같이 하였다.
def GuGu(n):
result = []
result.append(n*1)
result.append(n*2)
result.append(n*3)
...
result.append(n*9)
return result
정말 무식한 방법이지만 입력값 2를 주었을 때 원하는 결과값을 얻을 수 있었다. 하지만 위의 함수는 반복이 너무 많다. 가만히 보니 1부터 9까지의 숫자만이 틀린 것을 볼 수 있지 않은가? 그렇다면 이번에는 1부터 9까지를 출력해 주는 것을 먼저 생각하자.
대화형 인터프리터를 열고 필자는 다음과 같이 테스트 해 보았다.
>>> i = 1
>>> while i < 10:
. . . print i
. . . i = i + 1
결과는 아주 만족이다. 따라서 위와 같은 것을 GuGu함수에 적용시키기로 결정했다.
이러한 생각을 바탕으로 만든 함수는 다음과 같다.
def GuGu(n):
result = []
i = 1
while i < 10:
result.append(n * i)
i = i + 1
return result
다음과 갈이 테스트를 해 보았다.
print GuGu(2)
결과는 대 만족이다. 사실 위의 함수는 위와같은 과정을 거치지 않고서도 금방 생각할 수 있는 독자들이 많겠지마 위처럼 간단하지 않다면 필자가 했던 방식이 매우 도움이 된다는 것을 금방 알 수 있을 것이다.
즉, 필자가 강조하고 싶은 것은 프로그래밍이란 것은 위에서 보았듯이 매우 구체적으로 접근해야 머리가 덜 아프다는 얘기이다. 독자들 나름대로의 스타일이 있겠지만 도움이 됐으면 좋겠다.
앞으로 소개할 예제들을 위의 방식으로 설명하지는 않을 것이다. 하지만 필자가 위와 같은 사고 방식으로 아래의 예제들을 만들 수 있었을 거란 생각을 해주기 바란다. 자, 이제 앞으로 소개될 예제들을 보며 독자들 나름대로 멋진 생각들을 해보기 바란다.
출처 : wikidocs 점프 투 파이썬
'Python > 점프 투 파이썬' 카테고리의 다른 글
[03] tab을 4개의 space로 바꾸기 (0) | 2012.04.20 |
---|---|
[02] 간단한 메모장 (0) | 2012.04.20 |
06. 어디서부터 시작할 것인가? (0) | 2012.04.20 |
05. 파이썬 날개달기 4) 라이브러리 [2] 외장함수 (0) | 2012.04.20 |
05. 파이썬 날개달기 4) 라이브러리 [1] 내장함수 (0) | 2012.04.20 |
댓글