ぜのぜ

しりとりしようぜのぜのぜのぜ

209日目 非エンジニアの兄にPythonを教えてみた

兄がJSONCSVに整形して出力したい(意訳)と言うのでせっかくだしPythonで書けば?と勧めてみた*1.人に教えるのはほぼ初めてで結構面白かったので記憶が新鮮なうちに反応を書いてみる.

前提

僕はエンジニア.普段Pythonは全然書いてないが,データの整形ぐらいできるやろと思ってそそのかした.兄は非エンジニア.学校でもプログラミングはしてないらしい.

できたもの

必要な概念を一通り説明したあと書いてもらった.説明込みで2時間半ぐらい.

import datetime
import json

i = open('input.txt')
parsed = json.loads(i.read())
o = open('output.txt', 'w')
today = datetime.datetime.today()
date_diff = 0

for pair in parsed['key']:
    date = today - datetime.timedelta(days=date_diff)
    date_diff += 1
    o.write(f'{date}, {pair[0]}\n')

i.close()
o.close()

反応

こんな感じ.兄は英語は読み書きできるのでいちいち綴りを説明しなくてよかったのは助かった.

  • Pythonのインストール
    • シュッと入った*2
  • モジュール
    • 便利グッズという説明
    • importはそれを使うおまじないということで
  • パス
    • 今回はコピペしただけだったので大丈夫そう
    • 相対パスには触れていない
  • 変数
    • 数学の変数みたいなものという説明
  • 代入
    • i = i + 1について,i ≠ i + 1では???と混乱していた
      • 数学の等号とは違うという話をした
    • 書いていくうちにそれぞれ違うんだなということは理解したっぽい
  • ループ
    • 今回はforしかつかってない
    • 変数の場所に戸惑っていた
  • フォーマット文字列
    • 文字列とPythonのコードの区別ができてなさそうだった
    • REPLで動かしてみて区別できた様子
  • 0始まりのインデックス
    • なぜか知らないけど普通に受け入れていた(僕は馴染むのに結構かかった
    • 負のインデックスには触れなかった
  • ネストしたリストを値として持つ辞書へのアクセス
    • { 'key': [[0, 1], [2, 3]] }みたいなの
    • 一段階ずつアクセスしてもらった

*1:この前Python入門したいと言っていたので

*2:https://www.python.org/downloads/release/python-3101/