見出し画像

【pyxel 1.5】pyxelでpython勉強帳(4)

さて、前回まででpythonのデータ型から数値型と文字列型を取り上げることができました。今回はリストタプルディクショナリを取り上げてみたいと思います。どれもざっくりいうと「データをまとめて保持する」型になりますが、いろいろ特徴があります。
pyxelの表示機能を使いながら、違いを見ていこうと思います。

# -*- coding: utf-8 -*-

import pyxel

class APP:
  def __init__(self):
      pyxel.init(128, 128, title="pyxel")
      
      self.list1  = [10, 20, 30, 40]
      self.list2  = ["A", "B", "C", "D"]
      self.list3  = ["A", 2, [1,2], ("a","b")]
      
      self.tuple = (10, 20, 30, 40)
      
      self.dic    = {"TANAKA": "TARO", "SUZUKI": "HANAKO",}
      
      pyxel.run(self.update, self.draw)
     
  def update(self):
      pass

  def draw(self):
      pyxel.cls(0)
      pyxel.text(1, 10, str(self.list1), 6)
      pyxel.text(1, 20, str(self.list1[0]), 6)
      pyxel.text(1, 30, str(self.list1[3]), 6)      
      
      pyxel.text(1, 40, str(self.list2), 10)
      pyxel.text(1, 50, self.list2[1], 10)
      pyxel.text(1, 60, self.list2[2], 10)      

      pyxel.text(1, 70, str(self.list3), 5)
      pyxel.text(1, 80, self.list3[0], 5)
      pyxel.text(1, 90, str(self.list3[1]), 5)      
      
      pyxel.text(1, 100, str(self.tuple), 9)
      
      pyxel.text(1, 110, str(self.dic), 7)
      pyxel.text(1, 120, str(self.dic["TANAKA"]), 7)      
      
      
APP()

▲今回も形はそこまで変わらず。init部分でいろいろ作った変数をdraw部分で表示しています。

▲実行するとこんな感じ。がちゃがちゃと表示されていますね。

コードの中身を見ていきます。

      self.list1  = [10, 20, 30, 40]
      self.list2  = ["A", "B", "C", "D"]
      self.list3  = ["A", 2, [1,2], ("a","b")]

▲まずはリスト型から使ってみようと思います。定義する際は[ ]で囲みます。この中にはいろいろなデータ型を格納することができ、まとめることができます。list1は数値型を4つ、list2は文字列型を4つ、list3はデータ型を混在させて、文字列型・数値型・リスト・タプルを格納しました。

      self.tuple = (10, 20, 30, 40)

▲続いてタプル型です。定義する際は( )で囲みます。リストと似ていますが、大きく違う点が1つ。リストは「書き換え可能」なのに対してタプルは「書き換え不可能」です。定数的にリストを使いたいときとかに活躍するんですかね。あまり使ったことがありません。

      self.dic    = {"TANAKA": "TARO", "SUZUKI": "HANAKO",}

▲辞書型です。定義する際は{ }で囲みます。こちらもリストと似ていますが、違うのは「キー」があること。「:」の左がキーで、右が値になります。キーTANAKAの値はTAROって感じですね。

update部分は処理をしないのでpassで飛ばします。

  def draw(self):
      pyxel.cls(0)
      pyxel.text(1, 10, str(self.list1), 6)
      pyxel.text(1, 20, str(self.list1[0]), 6)
      pyxel.text(1, 30, str(self.list1[3]), 6)      
      
      pyxel.text(1, 40, str(self.list2), 10)
      pyxel.text(1, 50, self.list2[1], 10)
      pyxel.text(1, 60, self.list2[2], 10)      

      pyxel.text(1, 70, str(self.list3), 5)
      pyxel.text(1, 80, self.list3[0], 5)
      pyxel.text(1, 90, str(self.list3[1]), 5)      
      
      pyxel.text(1, 100, str(self.tuple), 9)
      
      pyxel.text(1, 110, str(self.dic), 7)
      pyxel.text(1, 120, str(self.dic["TANAKA"]), 7)      

▲draw部分です。順にみていきます。

      pyxel.cls(0)
      pyxel.text(1, 10, str(self.list1), 6)
      pyxel.text(1, 20, str(self.list1[0]), 6)
      pyxel.text(1, 30, str(self.list1[3]), 6)    

▲まずは1つ目のかたまりから。clsで画面を黒一色にしてから始めます。まずはリストを表示してみます。

▲リスト部分を抜き出すとこんな感じ。変数そのまま出すとカッコ付で出ます。また、「X番目」という形で特定の要素を出力できます。その際には変名の後に[ ]で指定します。順番が0から始まる点は注意。2行目は0番目を、3行目は3番目を出しています。

      pyxel.text(1, 40, str(self.list2), 10)
      pyxel.text(1, 50, self.list2[1], 10)
      pyxel.text(1, 60, self.list2[2], 10)    

▲リスト出力その2です。中身が文字列型というだけで特に変わったことはしていません。

▲実行するとこんな感じ。ほぼ同じです。

pyxel.text(1, 100, str(self.tuple), 9)

▲次はタプルを表示させます。リストとほぼ同じです。ここでは書いていませんが要素を指定して取り出すこともできます。

▲( )で囲まれて出力されます。

      pyxel.text(1, 110, str(self.dic), 7)
      pyxel.text(1, 120, str(self.dic["TANAKA"]), 7)      

▲最後は辞書型です。これまたほぼ同じですが、要素の指定の仕方が違います。辞書型では要素の順番ではなくキー名で指定します。

▲見切れてしまっていますが、辞書型の出力結果です。TANAKAのキーで指定したのでTAROが出ています。

今回はここまで。
読んでいただきありがとうございました。

次回に何を取り上げるかはまだ未定ですが、IF文などの制御文を扱ってみようかなと思っています。


ここまで読んでいただきありがとうございます!