9時間目タイトル

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

9時間目 randomを使ってturtleをさらに操ってみる②

こんにちは!趣味のプログラミングは平日にしかやらないヒラバヤシヤスキです。

みなさんは週末は充実していたでしょうか?

僕は、コストコにいって会員カードをつくってきました!
(もちろん買い物もしました。)
行ったのは2回目ですが、とにかく広さに圧倒されます。楽しく買い物できました!

それから、こちらの本も読みました(読みかけです…)。

タイトルの通り、WEBライティングの本です。
会社(エージェント)の先輩のおすすめとのことで、仕事でライティングする機会もありますし、読んでいます。
マンガ調というか会話調ですし、ストーリー仕立てなのでとっても読みやすいです。


さて、週が明けましたので、趣味のPythonを進めていきます笑

9時間目は課題の回みたいです!

【課題】

このように、スクリーンのあちらこちらに10個の円を作るプログラムを作ることが課題です。条件は乱数の範囲のみです。

乱 数 は3つの 変 数 を 使 います。 角度 は0~360°、 中心 からの 距 離 は-200~200 ピクセル、 半径 は 10~100 ピクセルにしてください。

さて、考えていきます。
7時間目では、ダメプログラムを量産してしまったので、今回は少ししっかり考えていきます。

まずは、どのような動きをカメさんにさせるかを考えてみると…。
①中心から円を描く地点まで移動する
②円を描く
③中心に戻る
④①~③を繰り返す

という動作が必要そうです。
それらをさらに分解すると、以下のようになりましょうか。

①中心から円を描く地点まで移動する
 ・進む方向(角度)をランダムに決定
 ・進む距離をランダムに決定
 ・軌跡をoffにする ※ここまでの3つは順不同
 ・カメさんを進める

②円を描く
 ・半径をランダムに決定
 ・軌跡をonにして円を描く

③中心に戻る

④①~③を10回繰り返す

では、これらを踏まえて、プログラムを作ってみます。

from turtle import*
from random import*
shape('turtle')
shapesize(2,2)
home()
for i in range(10):
   #①中心から円を描く地点まで移動する
   a=randint(0,360)
   b=randint(-200,200)
   penup()
   left(a)
   forward(b)
   #②円を描く
   c=randint(10,100)
   pendown()
   circle(c)
   #③中心に戻る
   home()

できました!
それでは、実行します!

お、おしい!
カメさんが中心にもどるときに線が引かれてしまいました…。
ホームポジションに戻るときもpenup()をしていなければいけませんでしたね。

修正します。

from turtle import*
from random import*
shape('turtle')
shapesize(2,2)
home()
penup() 1回目のpenup()はこちらに移動
for i in range(10):
    #①中心から円を描く地点まで移動する
    a=randint(0,360)
    b=randint(-200,200)
    left(a)
    forward(b)
    #②円を描く
    c=randint(10,100)
    pendown()
    circle(c)
    #③中心に戻る
    penup()
    home()

penup()を③に加えたので、1回目のpenup()は、for文の外に出しました。

それでは実行!

今度はうまくいきました!

色々な色の円を描く


さて、次の課題に進みます。

10 色 のリスト 作 り 、円 に 色 を 付 けてみよう。

だそうです。
変数が1つ増えるだけですね。すぐにできそうです。

10色の変数リストをiroなどで作成し、リストの中からランダムで色を取り出せば良さそうなので、

iro=['black','red','blue','lime','orange',
   'purple','tomato','yellow','green','pink']

d=randint(0,9)
pencolor(iro[d])

こんな感じのコマンドを丁度良いところに追加すれば良さそうです。

一点注意しなければいけないのが、
randintの範囲を0~9にしないといけないというところでしょうか。
pythonは4時間目で学んだ通り、0からスタートするため、色リストのblackはリストの1番目ではなく、実は0番目ですね。

以上を反映させると、以下のようになりました!

from turtle import*
from random import*
shape('turtle')
shapesize(2,2)
home()
penup()
#色リストをつくる
iro=['black','red','blue','lime','orange',
    'purple','tomato','yellow','green','pink'] #長いので改行
for i in range(10):
   #①中心から円を描く地点まで移動する
   a=randint(0,360)
   b=randint(-200,200)
   left(a)
   forward(b)
   #②円を描く
   c=randint(10,100)
   d=randint(0,9) #色を付ける
   pencolor(iro[d])
   pendown()
   circle(c)
   #③中心に戻る
   penup()
   home()

それでは、早速実行します!

なんだか、色も場所もかたよっていますが、一応は成功です!笑

ということで、9時間目はこれで終了です!

【今回の学び】
・今回は課題だったので、特に新しい知識はありませんでした。ただ、以下の復習ができました。
 -pythonでは数は0からスタートする
 -プログラミングをするときには細部に拘らないといけない
【未解決の疑問】
・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時間目 自動計算とループ処理で多角形を書く


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