「かめののろい」でPython #7時間目(1/2)
7時間目 for と変数でturtleをさらにさらに操ってみる④
こんにちは!ヒラバヤシヤスキです。
7時間目です。今回は、5重円のそれぞれの円の色を変えるプログラムを作ります。早速課題がでてきました!
①iro に1 色 追加 して5 色 にします。
②iro のリストを 呼 び 出 す 変 数 (箱 )b=0 を 用意 します。 どこに 入 れるか ?
③kame.pencolor(iro[a])だと 同 じ 色 で5この 円 を 描 くので、 a を b に 変 えます。
④1 色 描 いたら2 色 目 にするためリストの 数 値 を1ずつ 増 やしたいので b=b+1をどこかに 置 きます。
それでは 考 えてください。 解 説 は 次 ページ。
「test06-5.py」をコピーし、「test07-1.py」とし、
このように書き直しました。
import turtle
kame=turtle.Turtle()
kame.shape('turtle')
kame.shapesize(2,2,2)
kame.color('green')
kame.pencolor('red')
#変数hankeiに5つの要素リストをセット
hankei=[40,60,80,100,120]
#変数iroに5つの要素リストをセット
iro=['red','blue','tomato','lime','black'] #①のとおり5色に
b=0
for a in range(4):
for i in hankei:
kame.pencolor(iro[b]) #③aをbに変えて記述場所もここに変更
kame.circle(i)
b=b+1 #④はここかな?
kame.right(90)
あってるかなー?実行!!
あ、あれ?1つの五重円を描いて止まってしまいました。
以下のようなエラーがでました。
あー、なるほど、iro[b]がout of range つまり、範囲外になってしまったんですね。
たしかに、bが円を描くたびに+1されるので、最初の五重円を描いているときには、順調に赤(b=0)→青(b=1)→トマト色(b=2)→ライム色(b=3)→黒(b=4)と色を変えましたが、つぎの5重円を描くときには、b=5、つまり6つめの色を参照しようとしたのでエラーになったわけですね。
ということは、「b=0」はbの値をリセットする役割だったんですね。
ということで、b=0を、一つ目のFor分の塊の最後において再チャレンジ!
#ここより上は同じなので省略
iro=['red','blue','tomato','lime','black']
for a in range(4):
for i in hankei:
kame.pencolor(iro[b])
kame.circle(i)
b=b+1
kame.right(90)
b=0 #最後にbをリセット
が…。
今度は、bが定義されていません、だと。
変数は先に定義しないといけないんですね。
#ここより上は同じなので省略
iro=['red','blue','tomato','lime','black']
b=0 #とりあえずbを定義
for a in range(4):
for i in hankei:
kame.pencolor(iro[b])
kame.circle(i)
b=b+1
kame.right(90)
b=0 #最後にbをリセット
b=0が2回登場してかっこわるいけど実行!
おー、無事狙い通りになりました!!
それでは、解答を見てみましょう。
(色だけ変えています)
import turtle
kame=turtle.Turtle()
kame.shape('turtle')
kame.shapesize(2,2,2)
kame.color('green')
kame.pencolor('red')
hankei=[40,60,80,100,120]
iro=['red','blue','tomato','lime','black']
for a in range(4):
b=0 #b=0と定義する&リセット
for i in hankei:
kame.pencolor(iro[b])
kame.circle(i)
b=b+1
kame.right(90)
なるほど!b=0をここに置けば、すっきりするわけですね!
7時間目はまだ続くのですが、達成感が大きいので、本日はこれにて!
【今回の学び】
・変数によって、リストを繰り返し呼び出して用いるときには、変数をリセットするのを忘れてはいけない!
・shellでエラーの内容が出てくるのはありがたいが、英語が苦手な人は少し苦労するかも
【未解決の疑問】
・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時間目 自動計算とループ処理で多角形を書く
この記事が気に入ったらサポートをしてみませんか?