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 が必要。画面の無い環境では動かない

関連記事

あわせて読むと理解が深まります。

プログラミング学習に興味がある方は、まずは無料体験会へ

無料体験会・お申し込みはこちら