2025年1月10日

018-1.SPIKEプライムPython入門-第5回「変数の型(かた)について」

この連載では「レゴ エデュケーションSPIKEプライム(以下、SPIKE)」を使ったPython(SPIKEアプリ)によるプログラミングの方法を紹介します。 Python(パイソン)はプログラミング言語の一つです。Pythonは教育や人工知能の研究など様々な分野で使われていて、人気があります。 Pythonの主な特徴はオブジェクト指向を採用していることです。オブジェクト指向というのはプログラムの機能をオブジェクトという単位で切り分けて扱う手法のことです。オブジェクト指向は複雑なプログラムを作る場合に効果を発揮します。(文/松原拓也)

◆ 型(かた)とは何か

こちらは前回作成したライントレースのプログラムです。
このプログラムの中では「int」という関数を使っていました。しかし、その意味がわかりにくかったように感じましたので、今回は少し掘り下げて紹介します。

Pythonにおける重要な要素が「型(かた)」です。型というのは、データを扱う形式のことです。
関数を呼び出すとき、引数を正しい型に合わせておく必要があります。
たとえば、ヘルプ(ナレッジベース)を使って、「モーターペア」→「start_tank_at_power」関数の項目を見てみましょう。 引数のところに「タイプ:integer」と書かれています。これは「引数がinteger型である必要があります」という意味です。 その下の「エラー」「TypeError」と書かれていますが、これは「引数がinteger型でない場合、エラーが出てプログラムが動きません」という意味になります。
integer(インテジャー)型とは整数の型のことです。整数とは「1」「2」「3」のように少数を含んでいない数のことです。Pythonの場合、「変数 = 1」などのように数を整数で記述すれば、変数は自動的にinteger型に設定されます。

引数だけではなく、戻り値にも型があります。
たとえば、これは「get_reflected_light」関数の戻り値ですが、「整数」と書かれています。書式が統一されていないので、混乱してしまいますが、これはinteger型という意味です。

C言語やJavaScriptの場合、変数の型を宣言する必要があります。しかし、 Pythonでは宣言が必要がありません。いきなり「変数 = 値」と記述すると、変数の型が自動的に決まります。
たとえば、「syousu = 1.23」と記述した場合、float型の変数が作られます。 float(フロート)型というのは浮動小数点の型のことです。浮動小数点とは何かと技術的に説明すると大変なので、ここでは単純に少数のことだと考えてください。
このプログラムを実行すると、ライトマトリクスに「1.23」という文字がスクロールしながら表示されます。ちなみにここで使っている「write」関数はどんな型(文字列、整数、少数)でもエラーが出ずに表示ができてしまいます。

◆ 少数←→整数に変換

関数を使って、データの型を変更することができます。
たとえば、「int」という関数を使うと、少数→整数(float型→integer型)に値を変換することができます。
たとえば、このプログラムの場合、「1.23」という値が「1」に変換されます。ライトマトリクスには「1」とだけ表示されます。少数部分の「0.23」は消えてなくなります。

「float」という関数を使うと、整数→少数(integer型→float型)に値を変換することができます。
たとえば、このプログラムの場合、整数の「1」を少数の「1.0」に変換しています。ライトマトリクスには「1.0」とスクロールしながら表示されます。値としては何も変わっていませんが、変数の型が変わっています。

他にも、「type」という関数を使うと、変数の型を調べることができます。これは変数の中身がわからない場合に有効です。 このプログラムの例では、変数に「1.23」という数値を格納してから、変数の型を調べています。結果、ライトマトリクスに「<class 'float'>」と表示されました。float型(浮動小数点型)であるという意味です。

これでPythonの理解が少し深まったでしょうか。SPIKEアプリはプログラムにエラーがあった場合、ボタン部分が赤く点灯して止まるだけなので、エラーの原因が突き止めにくいという問題があります。エラーが出た場合には、変数の型が合っているかを確認してみましょう。

今回作成したプログラム(SPIKEアプリ用)

当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。