タートルグラフィックスでリストやタプルでカメを動かしてみよう

パイソンにはリストやタプルという一つの変数内で複数の値を持つことができるデータ構造があります。


リストとタプルの違いの前にサンプルコードをいくつか見てみます。




始めにリストの方ですが、

my_list = [5, 10, 15]
print(my_list)

# 最初の要素
print(my_list[0])

# 次の要素
print(my_list[1])

# 最後の要素
print(my_list[2])

※ #はコメントになり、#以降の行はコードの実行時に無視されます

のコードを作成して実行してみます。


実行結果は

[5, 10, 15]
5
10
15

になりました。


リストは

変数 =  [値1, 値2, 値3...]

※...は値4以降の値がいくらでも入るという意味になります。

の形式で定義し、[]内にカンマ区切りで値を複数個格納することができます。


この時の値はどのような型でも良く、整数や文字列以外でも、リストの値を入れることも可能です。


print(my_list)

で変数に格納されているリストのすべての値を出力し、

print(my_list[0])

[インデックス]でリスト内の何番目の値を出力するかを決める事ができます。

※注:何番目の指定は 1 からではなく 0 からの連番になります。


リスト内の一部の値を変更したい場合は

my_list = [5, 10, 15]

my_list[0] = 20
print(my_list)

のように

変数[インデックス] = 代入したい値

で指定する事ができ、上記のコードを実行してみると、

[20, 10, 15]

指定した箇所の値のみが変更されていました。


リストに関して触れるべきことはまだたくさんありますが、今回は保留にしましてタプルについて見ていきます。




タプルもリストのように一つの変数内に複数の値を持つことができますが、リストとの大きな違いは変数の定義の時に

変数 =  (値1, 値2, 値3...)

のように()で値を囲む事と、タプル内の値は変更できないという事があります。


サンプルコードで見ていきましょう。

my_tuple = (5, 10, 15)

print(my_tuple)

print(my_tuple[0])

のコードを実行してみると、

(5, 10, 15)
5

のように実行されますが、

my_tuple = (5, 10, 15)
my_tuple[0] = 20

を実行すると、

TypeError: 'tuple' object does not support item assignment

というエラーが返ってきて、値の更新ができません。


この値が更新できないという特徴は、開発の規模が大きくなる程重要になってきます。




タートルグラフィックスでは、

goto(要素数2個のリストかタプル)

でカメを指定の箇所まで移動する事ができます。


from turtle import *

shape("turtle")

# リストで指定
point1 = [100, 100]
goto(point1)

# タプルで指定
point2 = (0, 200)
goto(point2)
done()

上記のコードを実行してみると、

リストとタプルで指定した箇所にカメが移動しました。




リストとタプルは

for 変数 in (リスト or タプル):

の書式でリストかタプル内の値分だけ処理を繰り返す事ができます。


この機能を使って、下記のコードを作成してみます。

from turtle import *

shape("turtle")

points = ((50, 50), (0, 100), (-50, 50), (0, 0))
for point in points:
␣␣␣␣goto(point)
done()

※␣は半角スペース1個分

タプル内に要素数2個のタプル型の値を4個格納した後、繰り返しでタプル内から値を取り出してみます。


実行結果は

タプルの値の要素数分だけカメが移動しました。

マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。