さて、いよいよ難関の後編である。
『The most time-intensive part is recording a 5-minute teaching demo video. 』なんて伊達に書いてないし、そもそも前の課題の時点で30分は過ぎている。
Teaching Demoの動画を撮るのだ
https://codeinplace.stanford.edu/teach/instructions
課題はこの辺りを参照してほしい。
課題は
- 全ての変数には型があること
- 変数を宣言する方法と変数の使い方
- 変数の型の変え方
の3つを Mars Weightというスクリプトを介して説明せよということだ。
Mars Weightのサンプルコードは
# we use constants! MARS_MULTIPLE = 0.378 def main(): # Ask a weight on earth earth_weight = input('Enter a weight on earth: ') # earth_weight is multiplied by MARS_MULTIPLE mars_weight = float(earth_weight) * MARS_MULTIPLE # Display the equivalent weight on mars print('The equivalent weight on mars' + str(mars_weight)) if __name__ == "__main__": main()
とした。
少しCode in Placeでのサンプルコードを変えたが一応意図はある。
講義の戦略
1. とりあえず変数には変数名、値、型の3つがあることを説明する
2. Mars Weightのコードを書かせながら変数の宣言の仕方と使いかたを説明する
3. (そのままだとどうせエラーが起きるので)エラーを修正しながら型の説明をする
4. まとめ
という方針を考えた。
時間配分は1. が1分、2.と3.で3〜4分、4.で30秒ぐらいを想定していた。
1. 変数の型の説明
変数はname = hogehogeという形で作られる。
”=”の左側が変数の名前、右側が値と呼ばれる。なお、この”=”は「変数に値を代入する」という意味で、一般的なイコールという意味ではない。
変数の例を下に示す。
a = 1 b = 3.14 c = 'Hello Python'
変数には型があり、aは整数型(integer)、bは少数型(float)、cは文字型(string)と呼ばれる。
文字型で変数を宣言するときは''で囲むことを忘れないように伝える(''で囲まないと変数名として認識されるため)。
2. Mars Weightのコード
火星における地球の重量の割合は「MARS_MULTIPLE = 0.378」として与えられているのでそれを用いる。
素直にコードを考えれば
- 地球での重さを聞く
- 聞いた地球の重さにMARS_MULTIPLEをかける
- 結果を返す
となると思う。これからコードを書くと
# we use constants! MARS_MULTIPLE = 0.378 def main(): # Ask a weight on earth earth_weight = input('Enter a weight on earth: ') # earth_weight is multiplied by MARS_MULTIPLE mars_weight = earth_weight * MARS_MULTIPLE # Display the equivalent weight on mars print('The equivalent weight on mars' + mars_weight) if __name__ == "__main__": main()
となる。
もちろんこれはエラーが出て動かない。
3. どうして動かないのか考えよう
というていで変数の型の変更を覚える。
1. input()関数で入力した値は文字型なので少数型に変換する必要があること
2. 少数型では'The equivalent weight on mars'にくっつけることができないのでmars_weightを文字型に変換すること
の2点を理解させることを目標とした。
これをもとに修正したのが最初のコードになる。
4. まとめ
1. 変数を宣言するときは「name = value」という形で宣言する
2. 変数には様々な型があること
3. 変数の型は必要に応じてint()、float()やstr()を使って変更する
実際これを頭ではわかってても5分で説明するのは難しかった
難しかったわけですよ。
うん、しかも英語で。正直辛かった。
やけくそで日本語でやるかと思ったけど明らかに理解と準備不足なのを思い知らされた。
ということでさすがに圧倒的な実力不足を思い知ったので今回は諦めました。
そんなこんなでCode in Placeは受講者募集中です
https://codeinplace.stanford.edu/
そんなこんなでCode in Placeは日本時間で金曜日の21時まで参加を受け付け中です。
是非トライしてみてね。