울 아돌 초등 2학년 때(수학)

전업 프로 프로그래머가 아닌 나는 이것 저것 취미로 여러 프로그래밍 언어를 배워둔 덕에(!) 뭘 제대로 하는 게 하나두 없다. 쓸데도 딱히 없고. ㅋ

그러던 와중에 초등학교 2학년에 다니는 울 아돌이 매일 학교 숙제로 자릿수를 늘려가며 더하기, 빼기, 곱하기 문제를 30개씩 스스로 만들어서 풀어오는 숙제가 있었다.

처음엔 별 생각없이 랜덤한 숫자들을 불러주며 문제를 만드는 것을 도와줬는데, 계속 반복되는 일상에 슬슬 귀찮아지고 짜증이 나기 시작했다. 결국 엄청 피곤했던 어느 날 아돌에게 "야~ 그냥 니가 만들어서 해!"라고 짜증을 내고야 말았다.

나쁜 아빠가 되고 말았다는 엄청난 자괴감 속에 문득 반복이 반복되면, 반복문을 돌려봐야 한다는 가르침이 떠올랐다.

그래, 뱀의 지혜를 빌려보자!

그래서 처음 아들을 위해 input과 ramdom을 이용한 문제 출제 프로그램을 만들었다. ㅋ

덤으로 아들에게 파이썬 코드 실행 방법을 알려줬더니, 아빠가 뭔가 대단한 일을 한 걸로 아는 울 아들.
사기꾼~ ㅎㅎ

울 아돌 초등 3학년이 된 지금(영어)

매일 학교 등교를 시키는데, 3학년이 되니까 영어를 배운다고 한다.
선생님께서 문제를 하나 내 주셨는데,
"a부터 z까지 1에서 26까지 번호를 줬을 때, 단어의 합이 100이 되는 영단어를 찾아보세요.
힌트는 여러분이 학교에서 매일 하는 거예요."

혹시 선생님이 프로그래밍을 하시는 걸까?

답은 엄청 단순한 단어일 거 같은데...

모르겠다. 떠오르지 않는다.

몸에 좋고 맛도 좋은 뱀을 써봐?

구글링을 해보니 필수단어 3000 영단어가 담겨있는 엑셀 파일이 하나 있다.

이걸 어떻게 쓸까? 처음엔 openpyxl을 써보려고 했는데,
이상하게 계속 에러가 난다.

30분을 허송세월하니까 짜증이 나서 xlsx파일을 csv 파일로 저장하여 사용해 보기로 했다.

[소스 코드]

import csv

atoz = {
  'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 
  'e' : 5, 'f' : 6, 'g' : 7, 'h' : 8,
  'i' : 9, 'j' : 10, 'k' : 11, 'l' : 12, 
  'm' : 13, 'n' : 14, 'o' : 15, 'p' : 16,
  'q' : 17, 'r' : 18, 's' : 19, 't' : 20, 
  'u' : 21, 'v' : 22, 'w' : 23, 'x' : 24, 
  'y' : 25, 'z' : 26
}

file = open('dic.csv', 'r', encoding='utf-8')
rows = csv.reader(file)

for list in rows:
  word = list[0]
  sum = 0
  for element in word:
    for ab_key, ab_value in atoz.items():
      if element == ab_key:
        sum = sum + ab_value
        if sum == 100:
          print(list[0], sum)

file.close()

[실행결과]

accumulate 100
acknowledge 100
alternative 100
appropriate 100
attitude 100
automatic 100
boundary 100
commission 100
companion 100
congress 100
constitute 100
corridor 100
culture 100
discipline 100
equipment 100
eventually 100
excellent 100
flourish 100
fountain 100
headquarters 100
hospital 100
innovate 100
intellectual 100
interfere 100
interpret 100
irritate 100
manufacture 100
nonsense 100
opportunity 100
particular 100
personality 100
photograph 100
potential 100
prevent 100
primary 100
procedure 100
pursue 100
quarter 100
represent 100
restore 100
session 100
simulate 100
status 100
stress 100
telephone 100
terminate 100
therefore 100
venture 100
widespread 100

다행히 실행결과가 몇 개 안되서 금방 찾을 줄 알았는데,
잉? 이 결과 중 도대체 뭐지?
혹시 3000단어 중에 없는 단어는 아닐까?

뭘까요? 아시는 분 손~