3時間目タイトル

「かめののろい」でPython #3時間目

3時間目 変数(箱)を使ってturtleを操ってみる

こんにちは!ヒラバヤシヤスキです。
今回は、変数なるものを使うようです。
前回は「命令をまとめて実行」できるモジュールというものを扱いました。

変数は数学で習ったくらいで、いまいちよくわかっていませんが、
とりあえず、タイトルには「箱」とあるので、「箱」をイメージしながらテキストを読み進めてみます。

はじめに、モジュールを作るときと同様、「○○.py」というファイルを作成する必要があるそうです。今回は「test02.py」を作ります。

まずは、変数にモジュールを入れる

「test02.py」を作成し、テキストに戻ると。

※kameという変数(箱)にturtle.Turtleというモジュールをいれる

でました変数!!
2時間目で習ったモジュールの内容をふまえると、
変数という「箱」に、命令をまとめたもの(モジュール)を入れる
ということですが、まだよく分かりません。とにかく、先に進めてみます。

テキストにしたがって、「test02.py」に以下のコードを入力します。

import turtle
#変数kameにturtle.Turtle()を注入
kame=turtle.Turtle()
kame.shape('turtle')
kame.shapesize(2,2,2)
kame.color('purple')
kame.pencolor('lime')

kame.forward(200)
kame.left(120)
kame.forward(200)
kame.left(120)
kame.forward(200)
kame.left(120)

コード自体は、難しくないですが、turtle.Turtle()は初めて見た気がします。が、気にせず実行!

正三角形が描けますね!
カメさんの色が、かなりエキゾチックなのが気になります!笑

少し、変数について理解ができました!
kameという変数(箱)の中に、turtle.Turtle()というモジュール(関数?)をいれているので、kame.shape('turtle')でturtle.shape('turtle')と同じ働きをさせることができる!ということなんだと思います。

ちなみに、テキストでは多角形の内角と外角について触れています。
※図もテキストからの引用です

Run するとどんな 図 が 書 けるかな?
1 辺 が 200 ピクセルの 正三角形 が 正 解。 えっ! kame.left(120) 左 に 120°? 正三角形 の1つの 内角 は 60°じゃないの? そうです、 正三角形 の 1つの 内角 は 60°ですが、 カメさんの 進 む 道 は 直 線 から 左 に 180-60 で 120°となります。 多角形 は 1 つの 外角 で 考 えるといいですね。



ここで、すこしテキストから脱線して実験!

(次の見出しまで読み飛ばしても問題ありません!)

ところで、ここで一つ疑問が生じました。
今回、変数をkame=turtle.Turtle() とおいていますが、そうすると、kame.shape('turtle')は、正しくは、turtle.Turtle().shape('turtle')となるはずです。
その一方で、「カメよカメの姿になれ!」のコマンドは、1時間目では、turtle.shape('turtle')でした。
ということは、kameという変数を置かずに、turtle.Turtle().shape('turtle')と書いても、turtle.shape('turtle')と同じ働きをするのでしょうか?

ちょっと、テキストから脱線してしまいますが、
試しに、「shell」(1時間目で扱った、1行ずつコマンドを実行するものですね)で以下のコマンドを1行ずつ実行してみます!

#turtle.shape('turtle')と同じ働きをするか実験!
import turtle
turtle.home()
turtle.Turtle().shape('turtle')


無事、カメさんはカメさんの姿になりました!

では、逆に、「test02.py」で、kame=turtle.Turtle()ではなく、kame=turtleと変数をおいた場合は??
実際に変えてみて、実行!

画像は省略しますが、
kame=turtleでも、kame=turtle.Turtle()と同じようにエキゾチックカメさんが正三角形を描きました!
つまり、
kame=turtle.Turtle()  と
kame=turtle
は同じ働きをする、ということになります!
であるならばどうしてテキストでは、あえて長いkame=turtle.Turtle() なのかな?何か理由があるのかも?

と思いながら、テキストに戻ります笑

【実験のまとめ】
「カメよ、カメの姿となれ!」のコマンドはテキストで習ったパターンのほか、他ふたつのパターンでも実行可能
#1時間目で習ったコマンド
turtle.shape('turtle') 
#今回習った、変数を使ったコマンド
kame=turtle.Turtle()
kame.shape('turtle')
#新たに発見したパターンその1
turtle.Turtle().shape('turtle') 
#新たに発見したパターンその2
kame=turtle
kame.shape('turtle')

他にも変数を使ってみる

他にも変数を使って遊ぶために、新たなファイル「test03.py」を作ります。

test02.py のスクリーンの File→Save As と 進 んで、 "test03.py"という 名 前 を 付 けて 保存 します。 【IDLE 】のスクリーン 名 が test03.py になりましたね。

日本語だと、「名前を付けて保存」というやつですね。
ちなみに、PowerPointと同じように、[Ctrl]+[Shift]+[S]でも出来ました(ExcelやWordでの「名前を付けて保存」のコマンドである[F12]ではだめでした)。

続いて、
「200」を「mae」(前ですね)
「120」を「kaku」(角ですね)
とすべて置換します。これは、[Ctrl]+[H]でやると楽ですね。
別に、「mae」や「kaku」は好きな単語でよいそうです。ただし予約語と呼ばれる単語はだめだそう。

最後に、kame.pencolor('lime')のあとに、変数を定義します。
mae=200 
maeという箱に200をいれました。
kaku=120 kakuという箱に120をいれました。

#kameという変数(箱)にturtle.Turtleというモジュールをいれる
import turtle
#変数kameにturtle.Turtle()を注入
kame=turtle.Turtle()
kame.shape('turtle')
kame.shapesize(2,2,2)
kame.color('purple')
kame.pencolor('lime')

#maeとkakuを定義
mae=200
kaku=120

kame.forward(mae)
kame.left(kaku)
kame.forward(mae)
kame.left(kaku)
kame.forward(mae)
kame.left(kaku)

これを実行(ショートカットは[F5])すると、

同じように、三角形が描けました!

さて三時間目は以上で終了。今回の学びです。

【今回の学び】
・変数とは箱。変数=中身 と定義することで利用できる
・想定される便利ポイントは以下(あくまで想定です)
 -何度も使うもの(今回だと「200」や「120」)を変数で置いておけば、プログラムを修正するときに楽 (変数の中身さえ変えれば良い)
 -プログラムの中で変数の中身を変更しながら実行できるので、繰り返しや条件分岐で威力発揮
・ライム色によって、カメさんはエキゾチックたりえる

また、以下の疑問もメモしておきます。

【疑問】
・kame=turtle と kame=turtle.Turtle() は同じ働きをする。テキストでは、あえて後者なのはなぜか?

それでは、また!


「かめののろい」の目次

0時間目 まずパソコンにPythonをインストール
1時間目 IDLEを起ち上げ まずはコマンドラインでカメさん登場
2時間目 楽してカメさん エディターを使いこなそう!
3時間目 変数(箱)を使ってturtleを操ってみる
4時間目 同じ命令の繰り返しfor を使ってturtleを操ってみる
5時間目 for を使ってturtleをさらに操ってみる②
6時間目 for を入れ子にしてturtleをさらに操ってみる③
7時間目 for と変数でturtleをさらにさらに操ってみる④
8時間目 randomを使ってturtleを操ってみる①
9時間目 randomを使ってturtleをさらに操ってみる②
10時間目 条件文if elseともう1つのくり返しwhileで数当てゲームを作る
11時間目 条件文ifとelif・elseでおみくじを作る
12時間目 おみくじの結果でカメがよろこぶ
13時間目 座標(ざひょう)を操って多角形を書く
14時間目 座標(ざひょう)を操って多角形を書く②
15時間目 今まで学習したメソッドを駆使して図形を描く①
16時間目 今まで学習したメソッドと演算子で図形を描く
17時間目 今まで学習したメソッドを駆使して図形を描く②
18時間目 同じ模様の書き方をアルゴリズムのちがいで書いてみる
19時間目 inputを使って大きさのちがう複雑な図形を描いてみる
20時間目 少し複雑な図形を描いてみる
21時間目 変数とfor・if文で少し複雑な図形を書いてみる
22時間目 図形から離れて少し遊んでみる
23時間目 関数を作って遊んでみる
24時間目 自動計算とループ処理で多角形を書く


この記事が気に入ったらサポートをしてみませんか?