「グローバル変数」とか「ローカル変数」という名前がついている、ということは、変数にも種類があるということですか?ウム、その通りだ。何を言っているのか、全く分かりまセーン!やはりそうなるネ。関数内でグローバル変数の値を変えるには?今回のまとめある関数の内部だけで有効な「ローカル変数」では、初めに「ローカル変数」について説明しよう。先ほど「ローカル変数は関数の内部だけで有効」と説明したが、「関数」については覚えているかな?「def」文で名前を決めて、「def」文に続くブロックで中身を書くのでしたね?ウム、その通りだ。関数の内部とは、ここでいう関数の中身、すなわち「def」文に続くブロックのことなのだ。(忘れてしまった人は以下を見てね。新しいタブで開きます。)【マイクロビット入門】(8)関数を作ってみよう。関数の中身を表すブロック内で定義された変数が「ローカル変数」ということなのだよ。「ローカル変数」はどうやって作るのですか?簡単な実例を使って説明しよう。下のようなプログラムを考えてみる。test_a()「a」ボタンを押すと、関数「test_a」が呼び出されるプログラムですね?その通りだ。このプログラムの4行目では、変数「a」に1を入れることで、変数「a」を用意している。これを、「変数aを定義する。」というように表現する。変数「a」に1を入れるので、次の5行目によってマイクロビットの表示部分に1が表示されるのですね。ここで重要なのは、4行目が「インデント」されている、ということなのだ。変数「a」は、ローカル変数!・・・ってことですね!・・と、いうことなのだ!「ローカル変数が関数の内部だけで有効」とは?でも、「ローカル変数が関数の内部だけで有効」というのはどういうことですか?これを説明するために、プログラムを次のように改造してみよう。display.scroll(a)10行目に変数「a」の中身を表示する文を追加してみたのだ。マイクロビットで実行するとどうなるかな?パイソンエディターの「Flash」ボタンでマイクロビットに書き込んで、マイクロビットのAボタンを押すと・・・あれ、エラーになっちゃった!今回のプログラムでは、関数「test_a」の中身は4行目と5行目の2行というのは分かるかな?はい。いうことは、10行目は関数「test_a」の外なので、変数「a」は有効ではない、ということですか?よく分かったね。10行目で有効ではない変数「a」を表示しようとしたので、エラーとなってしまった、という訳なのさ。プログラム全体で有効なグローバル変数ところで、最初に「プログラム全体で有効なのがグローバル変数」と言っていましたね?ウム。確かにそんなことを言ったような気がするが・・・(嫌な予感がするぞ)ということは、変数「a」を「グローバル変数」にすれば、さっきのプログラムの10行目はエラーにならない、ということですか?おぉ、そこに気が付いたのか!なかなか鋭いね。「ローカル変数」は、「関数」の内部で変数を定義(変数を用意して初期値を入れる)したね。