| |

나와 파이썬과 빨간 에러 메시지

백석의 시 ‘나와 나타샤와 흰 당나귀’ 중 일부 발췌. 어쩌다 백석 선생님이 여기서…

나와 파이썬과 빨간 에러 메시지

문과인 내가
개어려운 파이썬을 배우려니
오늘밤은 푹푹 에러가 쩐다

코딩은 배우고 싶고
오류는 자꾸 나고
나는 혼자 쓸쓸이 앉어 맥주를 마신다
맥주를마시며 생각한다.
파이썬과 나는
짜증이 푹푹 쌓이는 밤 빨간 에러 메시지를 타고
검색 창으로 가자 출출이 우는 길쭉한 검색창으로 가 깃허브에 살자

이 기사는 [파이썬, 일주일만 하면 남혜현도 할 수 있을까?]에 이어지는 두번째 글이다.

바야흐로 코딩시대. 나같은 문과생도 코딩이 뭔지는 알아야 다가오는 인공지능 시대에 밥 벌어 먹고 살지 않겠나 하는 막연한 불안과 기대는 개뿔, 그냥 어쩌다 술먹다가 파이썬을 배우게 됐지만, 그래도 이왕 시작한 거 뭐 하나는 만들어보자.

..각설하고, 바로 시작한다.

3장. 읽을 수 있는 코드와 마이매직에잇볼(MyMagic8Ball) 게임

그저 ‘헬로우 월드’나 띄우고 구구단이나 짜던 2장까지와는 달리 3장은 갑자기 난이도가 오른 기분이다.

일단, 코드 연습을 하는 공간이 ‘스크립트 모드’로 바뀐다. 그전까지는 IDLE라는 대화창을 켜서, 컴퓨터와 밀당하듯 명령어를 넣고 바로바로 답을 얻었는데, 스크립트 모드는 이와는 달리 쭉 길게 코드를 적도록 되어 있다. 파이썬에 최적화한 메모장이라고 생각해도 될 것 같다. 중간에 코드가 맞는지 틀린지 모르면서 쭉 써야 하니까, 지금부터 자신과의 싸움.

지난 2장에서 ‘while’ 문이 나왔다면, 이번 장의 핵심은 ‘if then’ 문이다. “만약 어떤 조건에 맞다면(if), ~~란 명령을 수행하기(then)”라고 약속하는 구절이다. 이 if then을 갖고 간단한 게임을 만드는 것이 3장의 핵심 과제다.

그런데 말이 간단한 게임이지, 사실 코딩의 코자도 모르는 상태에서 주어진 명령문을 스크립트에 옮겨 적기만 하는일도 꽤나 마음이 복잡하다. 단순히 글자를 옮기는 것은 어렵지 않으나, 내가 왜 이 일을 하는지 잘 모르기 때문에 주어지는 막막함이 크다. 이 책은, 아마도 나한테 이렇게 말하는 거 같다.

“너는 이제 헬로우 월드도 만들수 있잖니? 그럼 바로 레벨을 쭉 올려보자”

뭐가 뭔지 모르는 채로 스크립트 모드에 책에 있는 ‘마이매직에잇볼’ 게임 코드를 베껴썼다. 쓰다 보니까 이런 생각이 들었다. 이놈들아, 에잇볼(포켓볼 8번 공) 넣으면 자살골이다.

사용자가 질문을 입력하면, 정해진 8개의 답 중 하나를 임의로 내보내는 게임이다. 여기까지는 글자를 읽을 줄 알면 그대로 옮겨칠 수 있다.

이걸 만들고 나면, 이 아무말 대잔치 같은 스크립트를 실행해보라고 한다. 문제는 여기서 시작 됐다.

스크립트를 실행하면 대화형 모드 창으로 바뀌는데, 거기서 “조언을 구하고 싶은 질문을 넣고 엔터를 치라”고 권유한다. 순간 당황해서 정말 내가 모르는 걸 물어봤다. 그때부터 시작이었다. 하염없이 나타나는 끝없는 에러 메시지, 주말 밤의 악몽.

하얀 건 바탕이요 빨간 건 에러다.

이 게임은, 그러니까 게이머가 아무 질문이나 넣으면 미리 정해진 답 8개 중 하나의 대답이 랜덤으로 화면에 표출돼야 한다. 그게 정답이다. 그런데 막상 그 랜덤 대답이 나와야 할 줄엔 계속해 빨간 에러 메시지만 표출되는 것 아닌가. 환장할 노릇.

파이썬을 책으로 배우다보면 현재 환경과 어느 정도 갭이 있다. 넘을 수 없는 벽 같은 걸 만났다고 생각이 들면 어떻게 해야 하겠는가?

1) 책을 접고 포기한다.
2) 아무 때고 주변 개발자한테 전화해 알려달라고 징징댄다.
3) 생각해보니 나는 개발과는 거리가 멀다고 다시 한 번 깨닫는다.
4) 검색한다.

개인적인 추천은 1번, 아니 4번 검색이다. 그렇다. 혼자 프로그래밍을 배우다 보니 한 장 한 장 넘길 때마다 예상치 못한 일이 생긴다. 주변에 물어볼 사람이 있으면 좋겠지만, 24시간 연락 가능한 사람은 세상에 없다. 혹시, 이 글을 읽는 중고딩이 있다면 선생님도 마찬가지다. 선생님도 퇴근후엔 민간인이라는 걸 기억해라.

주말 새벽 아픈 몸을 이끌고 응급실을 찾는 기분으로 검색 창을 열었다. 파이썬을 치니 꽤 많은 가이드 페이지가 나왔다. 그러지만 당장 필요한 건 내가 막히는 부분이다.

내가 낸 에러 메시지를 잘 보니 ‘AttributeError: module ‘random’ has no attribute ‘randint’ 이란 문장이 나온다. 뭔 내용인진 잘 모르겠지만, ‘random’이란 단어는 안다. 그래서 검색창에 ‘파이썬 랜덤’이라고 쳤다.

그중 첫번째 링크를 클릭했다. 내용을 읽다가 우회로를 찾았다. 교재에서 가이드를 준 함수 randint() 대신 이 사이트에 있는 함수 randrange()로 바꾸니까 에러 없이 명령이 실행됐다.

세상에… 마이매직에잇볼 신박하다.

나는, 어떻게 보면 검색으로 인한 꼼수(?)로 에러 문제를 해결했다. 그러나 분명히 randint() 를 넣어서 문제를 풀 방법이 있을 것이다. 다만 그 길을 찾지 못했을 뿐. 왜 내 컴퓨터에서는 저 함수가 먹히지 않았는지, 이건 또 언젠가 풀어야 할 숙제로 남았다.

한 시간 넘에 에러메시지와 싸웠더니 지친다. 더 하면 파이썬에 질릴지 모르니, 2일차 공부는 여기서 스톱. 공부는 역시 재미를 유지해야 하는 법. 여러분은 모르겠지만, 나는 개발만 배우는 것이 아니라 체험기를 써야 하니 자꾸 드립도 생각해야 하다. 이중고다. 누구를 위한 개발기인가. 혹시 마지막 까지 읽은 사람이 있다면 기사 밑에 댓글을 달아달라. 추첨을 통해, 애정을 드리겠다.

이상. 4장에서 만납시다.

글. 바이라인네트워크
<남혜현 기자> smilla@byline.network

[관련기사]
파이썬 일주일만 하면 남혜현도 할 수 있을까?

관련 글

답글 남기기

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