見出し画像

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

18時間目 同じ模様の書き方をアルゴリズムのちがいで書いてみる

こんにちは!ヒラヤバヤシヤスキです。

最近、大学生ぶりにiPhoneに変えたのですが、すごい進化しておりびっくりしました。
長らく、
・カスタマイズ性が高い
・windows&chrome使い
・安い
という理由でAndroidを使っていました。

しかし、いつの間にか、iPhoneでもヴィジェットがおけるようになりましたし、ショートカットというアプリなどのおかげでchromeを標準アプリのように使えるようになっていました。
動きもサクサクなので、しばらくはiPhoneに落ち着きそうです。

さて、本日のプログラミングを始めます。

マリモみたいな図を描く

それでは始めていきましょう!

テキストを開いて…

ん??

画像はテキストから引用

い、いきなりすごい難しいぞ…!笑
もはやどんな模様かもよくわからないし…。

とりあえず、考えてもよくわからないので、続きを読みます。

 画像はテキストから引用

あ、これを見ればなんとなくわかりますね。安心安心。

つまり、中心から外に向かって直線を引き、1°ずらして色を変えてそれを360回繰り返すということですね。

speed()と、hideturtle()は初めて目にしますが、
前者はカメさんの速度、後者は、②のカメさんを見えなくするものでしょうかね。

早速書いてみます。

from turtle import*
shape('turtle')
hideturtle()
speed(0)
iro=['red','green','blue','magenta','yellow','black']
for i in range(360):
   color(iro[i%6])
   forward(100)
   forward(-100)
   right(1)

並び変えるだけなのですぐですね。
実行します!

こうなりました!うまくいきましたね!

もっと早く描く

続いて、以下のプログラムについて考えるようです。

一応、打ち直します。

from turtle import*
hideturtle()
speed(0)
goto(-100,0)
iro=['red','green','blue','magenta','yellow','black']
for i in range(180):
   color(iro[i%6])
   forward(200)
   right(0.5)
   forward(-200)
   right(0.5)

とりあえず、実行してみます!

先ほどの模様とほとんど同じですが、こちらは半分くらいの時間で描けました!面白いですね。

ほとんど同じ、といったのは、厳密には同じではないからです(多分)。

最初の模様は、すべて、中心から描いていますが、二つ目の模様は、直線を書き終えたら0.5°方向を変えて次の直線を書くというものなので、中心を通らず、すこしずつずれているものと思われます。

少し、値を極端に変えてみると、わかりやすいかと思います。

from turtle import*
hideturtle()
speed(0)
goto(-100,0)
iro=['red','green','blue','magenta','yellow','black']
for i in range(9): #今回は9回繰り返す
   color(iro[i%6])
   forward(200)
   right(10) #10°ずつずらす
   forward(-200)
   right(10)

これを実行すると、

各直線が中心を通らないのがわかると思います。
しかし、同じようなプログラムでも考え方の違いで時間も半減できる、というのはとても面白いです!

本日は以上です。


今回の学びなど

【今回の学び】
・似たプログラムでもアルゴリズム次第で時間を半減できる
【未解決の疑問】
・kame=turtle と kame=turtle.Turtle() は同じ働きをする。テキストではあえて後者なのはなぜか?
・長い動画をアップする方法はあるか?
・undo()の挙動が良くわからない
 (どの時点までやり直し?)


「かめののろい」の目次

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時間目 自動計算とループ処理で多角形を書く



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