Python turtleとは?図形を描いてプログラミングを学ぶ方法
turtleは、画面の上のペンを動かして図形を描く標準ライブラリです。
命令の結果がそのまま目に見えるため、プログラミングを学び始める段階の教材としてよく使われます。子ども向けの教室でも定番です。
最初の1枚
import turtle
turtle.forward(100) # 100歩進む
turtle.right(90) # 右に90度回る
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.done()
正方形が描かれます。ペンは最初、画面の中央を向いて右を向いています。
done() を忘れると一瞬で閉じる
これが最初の関門です。turtle.done()が無いと、描き終わった瞬間にウィンドウが閉じてしまい、何も見えません。
done()はウィンドウを閉じるまで待つという意味です。mainloop()という別名もあり、中身は同じものです。
import turtle
print(turtle.done is turtle.mainloop)
実行結果:
True
対話モード(REPL)では done() は不要です。入力待ちの間ウィンドウが維持されるためで、スクリプトとして実行するときだけ必要になります。
繰り返しで短く書く
import turtle
for _ in range(4):
turtle.forward(100)
turtle.right(90)
turtle.done()
同じ命令の並びが4行から2行になりました。range(4)の数とright()の角度を変えれば、三角形も六角形も描けます。
n = 6
for _ in range(n):
turtle.forward(80)
turtle.right(360 / n)
360を角の数で割るのが多角形の基本です。この一行に算数とプログラミングの接点があります。
よく使う命令
forward(n)/backward(n)… 進む・戻るright(deg)/left(deg)… 右・左に回るgoto(x, y)… 座標を指定して移動。中央が(0, 0)penup()/pendown()… 線を描かずに移動する・描くpencolor('red')/pensize(3)… 色と太さcircle(r)… 円。extentで弧の角度、stepsで多角形になるspeed(0)… 最速。1〜10でも指定できるhideturtle()… 矢印を隠す
短縮形も用意されています。fd・bk・rt・lt・pu・pdなどで、長い名前と同じ働きをします。
塗りつぶす
import turtle
turtle.fillcolor("orange")
turtle.begin_fill()
for _ in range(3):
turtle.forward(120)
turtle.left(120)
turtle.end_fill()
turtle.done()
begin_fill()とend_fill()で囲んだ範囲が塗られます。閉じた図形になっていないと塗りがはみ出すので、最後に元の位置へ戻ることを確認してください。
模様を描いてみる
import turtle
turtle.speed(0)
turtle.bgcolor("black")
colors = ["red", "orange", "yellow", "green", "blue", "purple"]
for i in range(120):
turtle.pencolor(colors[i % len(colors)])
turtle.forward(i * 2)
turtle.right(59)
turtle.hideturtle()
turtle.done()
角度を60ではなく59にずらすと、図形が少しずつ回転して渦のような模様になります。数字を1つ変えるだけで結果が大きく変わるのが、この題材のおもしろいところです。
文字を書く
import turtle
turtle.penup()
turtle.goto(-80, 0)
turtle.write("テックジム", font=("Arial", 24, "bold"))
turtle.done()
write()の引数は(arg, move=False, align='left', font=('Arial', 8, 'normal'))です。既定のフォントは8ポイントで小さいので、明示的に指定したほうが見やすくなります。
動かない環境がある
turtleはtkinter の上に作られているため、次の場所では動きません。
- 画面の無いサーバー … ウィンドウを開けない
- tkinter が入っていないPython …
ModuleNotFoundErrorになる - オンラインの実行環境 … ブラウザ上のものは対応していないことが多い
手元のPythonで使えるかは、これで確認できます。
import tkinter
print(tkinter.TkVersion)
エラーにならずバージョン番号が出れば使えます。Linuxで入っていない場合は、OS側のパッケージを入れる必要があります。
学習の道具として
turtle は実務で使うライブラリではありません。それでも価値があるのは、
- 命令の順番が結果に直結する … 手順を考える練習になる
- 繰り返しの効果が目で分かる …
forを学ぶ最初の題材になる - 間違いが絵として現れる … エラーメッセージを読む前に気づける
ここでforや関数の感覚をつかんでから、文字列やリストの処理に進むと理解が速くなります。
まとめ
- done() を忘れるとウィンドウが即座に閉じる
- 多角形は
360 / 角の数で回る - 塗りつぶしは
begin_fill()とend_fill()で挟む - tkinter が必要。画面の無い環境では動かない
関連記事
あわせて読むと理解が深まります。





