第三回 『変数』と『input関数』について

プログラミング編

はじめに

マサト先生
マサト先生

やあ、こんにちは。今回は変数インプット関数について学んでいこう。

ヒロト
ヒロト

はい!よろしくお願いします。

マサト先生
マサト先生

では毎回おなじみの作業である、ビットアローの起動をやってくれ。今回は一人でやってみよう!もし、忘れてしまったら前回の最初を見てくれたらいいだろう。ビットアローの画面を出すことができたら、画面上部のファイルから新規を選択し、新しいファイル名として『file2』と入力してエンターキーを押すと今回の準備は完了だ。今回はこの『file2』にプログラムを書いていくということだ。

ヒロト
ヒロト

準備できました!とてもスピーディにできるようになりました。

変数について

マサト先生
マサト先生

よし、いいぞ!では、今日の内容を始めていこう。始めに変数について説明するぞ。

変数とは文字列数値などのデータを一時的に保管しておく『箱』のようなものだ。変数に文字列や数値を入れることを代入という。まあ、実際見てもらった方が早いだろう。下の画面を見てくれ。

マサト先生
マサト先生

上の画像の一行目では、nameという変数‘Hiroto’という文字列を代入していて、その変数を前回紹介したプリント関数に代入している。四行目ではageという変数13という数値を代入していて、その数値をプリント関数に代入している。 

ヒロト
ヒロト

変数の名前は何でもいいのですね!代入するデータがどんなものかわかるような名前を付けているのですね?

マサト先生
マサト先生

基本何でもいいが、使えない名前もいくつかある。詳しくは後で伝えるぞ。また、変数は半角英数字でなければならないことに注意してくれ。また、アンダースコア『 _ 』も使うことができるぞ。例えば、A_1、A_2・・・などのように変数を区別するときに便利だ。日本語の変数は残念ながら使えないのだ。さて、上のプログラムを実行しよう。実行するときはF9ボタンを押すと楽だったな!結果は次のようになる。

ヒロト
ヒロト

なるほど、nameという変数に’Hiroto’という文字列が代入されているから、プリント関数にnameを代入して実行しても、表示されるのはnameではなく’Hiroto’となるのですね。

ヒロトノート

変数は基本好きな名前が付けられるが、半角英数字あるいはアンダースコア『 _ 』を使わなくてはならない。例えば、A_1、A_2・・・などのように変数を区別するときに便利。日本語の変数は使えない。

マサト先生
マサト先生

そういうことだ。そして、変数には後から別のデータを代入することができて、そのときは後から代入したデータが上書きされるのだ。例えば先ほどのプログラムの変数nameに’Math’という文字列を代入してみて実行すると次のようになる。

ヒロト
ヒロト

確かに上書きされてますね!7行目でnameという変数は’Math’という文字列を表すことになるのですね。

予約語たち

マサト先生
マサト先生

そういうことだ。変数は今後、様々なプログラムを書く場面において中心的かつ不可欠な役割を演じる最重要な概念の一つだからそのつもりでいてくれ。最後に変数の名前として使えないものがいくつかあることを伝えておこう。Pythonにはもともと設定されている命令文や関数などが多くあるのだ。有名なものとして『 if 』や『 for 』などがあるぞ。これらは変数の名前として使えないのだ。このような言葉は予約語と呼ばれていて以下に大体まとめておいたぞ。

予約語

次の言葉は変数名や関数名に使えない。

FalseNoneTrueandasassertasync
awaitbreakclasscontinuedefdelelif
elseexceptfinellyforfromglobalif
importinislambdanonlocalnotor
passraisereturntrywhilewithyield
ヒロト
ヒロト

けっこう多いのですね!

input関数について

マサト先生
マサト先生

ああ、もちろん全部覚える必要は全くないぞ。今後、関数を学んでいく中で少しづつ予約語を覚えて行けばいいのだ。これで、変数についてはとりあえず終わろう。今使っている『file2』は画面上部の保存ボタンを押して保存しよう。そして、画面上部のファイルから新規をクリックして新しいファイル『file3』を作成してくれ。準備ができたら次はinput関数について説明しよう。input関数を使うと、プログラムを実行中にキーボードからの入力待ちの状態にできるのだ。下の画面を見てくれ。

マサト先生
マサト先生

これを実行すると下のようにキーボードからの入力待ちの状態になるのだ。

マサト先生
マサト先生

ボックスの中に名前を入力してOKボタンを押すと、変数であるnameに入力した名前が文字列として代入され、続きのプログラムであるprint関数が実行されるというわけだ。入力する文字は半角英数字だけでなく漢字も可能だぞ。後は自分で実行してみるといい。

ヒロト
ヒロト

できました!ちゃんと自分の名前が表示されました。コンピュータに名前を覚えてもらったみたいで嬉しいです。

メッセージ付きinput関数

マサト先生
マサト先生

ふふふ、そうだろう?

ちなみに、入力する画面に『メッセージ付き』で表示することもできるぞ。入力時に相手に何を入力してほしいのか伝えることができるのだ!下の画面を見てくれ。先ほどのプログラムの一行目を書き換えてあるぞ!文字列はしっかりシングルクォーテーションで囲んであげることを忘れないようにな!

マサト先生
マサト先生

これを実行すると下のように、入力ボックスにメッセージがついて表示されるのだ!

ヒロト
ヒロト

本当だ!これで何を入力すればよいのか相手に伝わりますね!

マサト先生
マサト先生

さて、大体こんなところだな。最後に練習問題をやって終わりとしよう。

ヒロト
ヒロト

はい、頑張ります!

練習問題2

問題

上のプログラムで名前を入力したら次に、年齢を入力させるプログラムをかき、年齢を入力したらそれを表示し、『(名前)さん、こんにちは!』と表示されるプログラムを書こう!

ヒロト
ヒロト

これでいいと思うのですが、最後のprint関数の結果が

nameさん、こんにちは!』となってしまい、入力した名前が表示されないのです。

マサト先生
マサト先生

なるほど、よくあるミスの一つだ。これは伝えてなかった気がするが、シングルクォーテーションで囲んだ文字列や数字は全てそのままの形で表示されるという効果を持つのだ。なのでせっかく変数のnameに自分の名前を代入したのに、それをシングルクォーテーションで囲んでしまったためにそのままの形、つまりnameという文字列として表示されたという事態が起きていたのだ。正しくは7行目のprint関数のカッコの中において、変数のnameと、文字列の 『 ‘さん、こんにちは’ 』の間にコンマをつけることで解消されるぞ!コンマ一つないだけで今回のようにエラーとなってしまうのだ。下に解答として載せておくから一度自分でも試してみるといいだろう。

解答

ヒロト
ヒロト

出来ました!ちゃんと入力した名前が表示されました!

マサト先生
マサト先生

最初のうちは細かい部分で何回もエラーとなってしまうが慣れてくれば感覚的にできるようになるのだ。慣れるためには自分で少し遊んでみるといいだろう。では今回はここまでにしよう。お疲れさん。

ヒロト
ヒロト

はい、ありがとうございました!

コメント

タイトルとURLをコピーしました