Python を使った最も基本的なプログラムとして、画面(ターミナル)にメッセージを表示するプログラムを作る。1行メッセージを表示するものと、プログラムが得意とする繰り返し処理を使った複数行のメッセージを表示する、2つのプログラムを作っていく。
サンプル・プログラムのダウンロード
hello1.py | 画面に1行メッセージを表示する |
hello2.py | 画面に複数行のメッセージを表示する |
画面に1行メッセージを表示する
VSCode(VisualStudio Code)を起動し、左側のファイルエクスプローラーから「新しいファイル」アイコンをクリックし、Pythonプログラム・ファイル "hello1.py" を新規作成する。
次に、中央上のエディタに "print("こんにちは(^^)")" と入力する。
次に、中央上のエディタに "print("こんにちは(^^)")" と入力する。
エディタ右上の ▷(実行)アイコンをクリックすると、中央下のターミナルに "こんにちは(^^)" と表示する。
ここで、ターミナルに "SyntaxError" と表示されたときは、プログラムが正しく実行されていない。line 1(1行目)で SyntaxError(文法エラー)が発生していると言っている。"print("こんにちは(^^))" の最初のダブルクォーテーションの下に キャレット ^ が表示されており、その近くにエラーがあることを意味している。
じつは、2番目の(文字列を閉じる方の)ダブルクォーテーションが抜けていた。2番目のダブルクォーテーションを追記し、実行すると正しく動くようになる。
慣れないうちは "SyntaxError" が出ることが多いと思うが、心を落ち着かせて、原因を探っていこう。30分やっても見つからないときは、今日の学習はそこまでにして、気分転換して、明日に再挑戦した方がいいだろう。
慣れないうちは "SyntaxError" が出ることが多いと思うが、心を落ち着かせて、原因を探っていこう。30分やっても見つからないときは、今日の学習はそこまでにして、気分転換して、明日に再挑戦した方がいいだろう。
print("こんにちは(^^)")
画面に複数行のメッセージを表示する
VSCodeを使って新しいPythonプログラム・ファイル "hello2.py" を作成する。
エディタに上のプログラムを入力しよう。なお、下のソース・プログラム表示エリアの右上隅にマウスオンすると COPYボタンが現れ、これをクリックすると、ソース・プログラムをクリップボードにコピーできる。これ以降、同様の仕組みになっている。
▷(実行)アイコンをクリックすると、中央下のターミナルに3行のメッセージを表示する。
▷(実行)アイコンをクリックすると、中央下のターミナルに3行のメッセージを表示する。
#メッセージ・リスト
messageList = ["おはよう", "こんにちは", "こんばんは"]
#表示用文字列を生成する.メッセージを改行で区切る.
dispMessage = ""
for message in messageList:
dispMessage += message + "\n"
#ターミナルに表示する.
print(dispMessage)
プログラムは10行に増えたが、ハッシュ # から行末はコメントとして認識し、プログラムには何の影響も与えない。また空行も何の影響も及ぼさない。
表示したい3つのメッセージは、
ブラケット [...] で囲まれた全体をリストと呼び、その中でカンマ , で区切られた1つ1つを要素と呼ぶ。ここでは、"おはよう", "こんにちは", "こんばんは" の1つ1つが要素で、["おはよう", "こんにちは", "こんばんは"] がリストである。
表示したい3つのメッセージは、
messageList = ["おはよう", "こんにちは", "こんばんは"]のように記されている。
ブラケット [...] で囲まれた全体をリストと呼び、その中でカンマ , で区切られた1つ1つを要素と呼ぶ。ここでは、"おはよう", "こんにちは", "こんばんは" の1つ1つが要素で、["おはよう", "こんにちは", "こんばんは"] がリストである。
リストは、左図のように仕切りのある箱のようなものだと考えてほしい。仕切りの1つ1つに要素が入っているイメージだ。
なお、他のプログラミング言語では同様のデータ構造として配列というものがあるが、Python ではなぜリストと呼ぶかは、後述の「5.4 リストと配列」で説明する。
なお、他のプログラミング言語では同様のデータ構造として配列というものがあるが、Python ではなぜリストと呼ぶかは、後述の「5.4 リストと配列」で説明する。
イコール = の左辺にある messageList を変数と呼ぶ。
これは、数学で \( x = 1 \) と書くのに似ており、変数 messageList にリスト ["おはよう", "こんにちは", "こんばんは"] を代入するという働きをする。
上図のようにリストに名前が付いたと考えてもらってもいい。
変数の名前として使えるのは、英大文字、英小文字、数字、アンダーバー _ などの記号。大文字と小文字を区別する。
慣習として、変数名には英語を使う。英語が苦手でも心配はない。Google翻訳や DeepLの翻訳結果を使えば十分だ。
変数名は、それを読むだけで中に何が入っているか分かるように書こう。たとえば、
次に、画面に表示するための文字列を変数 dispMessage に代入していく。
インデントの部分は1行だけだが、累算代入演算子(いずれ説明する) += を使って、変数 dispMessage の最後尾に変数 message と改行 "\n" を加えている。
ここで、print関数にはインデントがないので、for文 による繰り返しの対象ではない。
演算子や繰り返し処理については、このシリーズの後の方で詳しく解説する。
これは、数学で \( x = 1 \) と書くのに似ており、変数 messageList にリスト ["おはよう", "こんにちは", "こんばんは"] を代入するという働きをする。
上図のようにリストに名前が付いたと考えてもらってもいい。
変数の名前として使えるのは、英大文字、英小文字、数字、アンダーバー _ などの記号。大文字と小文字を区別する。
慣習として、変数名には英語を使う。英語が苦手でも心配はない。Google翻訳や DeepLの翻訳結果を使えば十分だ。
変数名は、それを読むだけで中に何が入っているか分かるように書こう。たとえば、
- 自然な英語で書く。例:year(年)
- 単語と単語の間はアンダースコアでつなげるスネークケース(例:light_year 光年)と、2つ目の単語の頭文字を大文字にするキャメルケース(例:lightYear 光年)がある。
- グローバル変数(いずれ説明する)は頭1文字を大文字にしたり(例:Speed_of_light 光速)、アンダースコアではじめる(例:_speed_of_light 光速)
- 定数は大文字とアンダースコアを使う(例:WIDTH 幅)※Pythonには定数の概念がないため、あくまで運用上の命名である。
次に、画面に表示するための文字列を変数 dispMessage に代入していく。
dispMessage = ""ダブルクォーテーション "" だけのものは空文字と呼び、変数 dispMessage の内容を空にすると考えてほしい。
for message in messageList:次の2行だが、for文 はリスト messageList から要素を1つずつ取り出して変数 message に代入しながら、次のインデントのある部分(スペースやタブを使って行頭から空白がある部分)を繰り返す働きをする。
dispMessage += message + "\n"
インデントの部分は1行だけだが、累算代入演算子(いずれ説明する) += を使って、変数 dispMessage の最後尾に変数 message と改行 "\n" を加えている。
print(dispMessage)最後に "hello1.py" と同様、print関数を使って画面に変数 dispMessage の内容を出力する。
ここで、print関数にはインデントがないので、for文 による繰り返しの対象ではない。
演算子や繰り返し処理については、このシリーズの後の方で詳しく解説する。
次回予告
print関数を使った画面出力は、Pythonプログラミングの基本中の基本ではあるものの、見た目に地味である。そこで次回は、WindowsやX-Windowのダイアログ画面を使って、GUIによる入出力を行うサンプル・プログラムを紹介する。
コラム:hello, world
1978年(昭和53年)2月、『プログラミング言語C』(原題:The C Programming Language)という書籍がアメリカで出版された。著者であるブライアン・カーニハン (Brian W. Kernighan) とデニス・リッチー (Dennis M. Ritchie) の頭文字を取ってK&Rと呼ばれるプログラミング入門書の古典である。石田晴久が訳した日本語版は1981年(昭和56年)7月に出版された。
この本の最初の例題として掲げられているプログラムは、"hello, world" というメッセージを画面に表示するものである(けっしてアニメ映画のタイトルではない)。
この後、C言語以外のプログラミング言語の入門書でも、最初に "hello, world" を表示するプログラム例が掲げられるようになった。このシリーズの構成もK&Rを参考にしていることもあり、これに倣った。
私は1985年(昭和60年)頃に日本語版を購入した。当時、ようやくFORTRANやBASICを使ってプログラムを書けるようになった私にとって、ポインタなど難解な部分はあったものの、これ以外に適当な入門書もなく、本に書かれているとおりのプログラムを打ち込んで試行錯誤したものである。
この本の最初の例題として掲げられているプログラムは、"hello, world" というメッセージを画面に表示するものである(けっしてアニメ映画のタイトルではない)。
この後、C言語以外のプログラミング言語の入門書でも、最初に "hello, world" を表示するプログラム例が掲げられるようになった。このシリーズの構成もK&Rを参考にしていることもあり、これに倣った。
私は1985年(昭和60年)頃に日本語版を購入した。当時、ようやくFORTRANやBASICを使ってプログラムを書けるようになった私にとって、ポインタなど難解な部分はあったものの、これ以外に適当な入門書もなく、本に書かれているとおりのプログラムを打ち込んで試行錯誤したものである。
並行して、雑誌『Oh! MZ』や『マイコンBASICマガジン』に掲載されているプログラムを手入力することでプログラミングの勉強をした。
大学で「電算機概論」「電算機実習」を履修したものの、独学で他人が書いたプログラムを入力し、改造することが一番勉強になった。
大学で「電算機概論」「電算機実習」を履修したものの、独学で他人が書いたプログラムを入力し、改造することが一番勉強になった。
(この項おわり)