ターミナルウィンドウからPythonShellを起動
ターミナルウィンドウからPythonを起動するためのコマンドを入力し、プログラムを動作させる方法はWindows、macOSやLinuxでも同じです。 異なるのはターミナルウィンドウを開く方法だけです。 以下では、Windowsについてやや詳しく説明しますが、macOSユーザも読んで、その要領を掴んで下さい。
WindowsターミナルウィンドウからPythonシェルを使う
Windowsでターミナルウィンドウを開くには、Windowsシステムツールから「コマンドプロンプト」または「Windows PowerShell」をクリックします。 ターミナルウィンドウを開くために2つの方法が用意されている理由は、ターミナルウィンドウに入力できるWindowsシェルのコマンド体系の違いです。 Windows PowerShellを使うと、macOSやLinuxと同様な強力なシェルコマンドを使うことができ、深いWindowsの運用ができます。
Pythonプログラムを実行するという範囲では両者の差はなく、本書ではWindowsでターミナルウィンドウを開くには「コマンドプロンプト」を使うものとして説明します。
デスクトップなどにコマンドプロンプト
のショートカットを作成しておくとよいでしょう。
以下の例で、ターミナルウィンドウに現れる、たとえば C:\Users\hoge> のような文字列をWindowsのシェルプロンプトといい、キーボーからのコマンド入力の待ち受けを表します(hogeはユーザ名)。 Pythonシェルの世界に入るには、キーボードからコマンド文字列 python
を入力し、最後にRETURNを押します。 Pythonがインストールしてあればターミナルウィンドウには以下のように表示されます。
C:\Users\hoge> python Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
Pythonのバージョンに応じて数字などが多少違うかもしれませんが、気にする必要はありません(この例ではWindows用のPythonのバージョンが32bit用python3.5.2であることを示しています)。
文字列>>>
をPythonシェルのプロンプトといい、Pythonステートメントの入力を待ち受けます。
これからどうするか説明を続ける前に、macOSでターミナルウィンドウからPythonを起動する方法を紹介しましょう。
macOSターミナルウィンドウからPythonシェルを使う
macOSでターミナルウィンドウを開くには、アプリケーション内にあるユーティリティからターミナル.app
をクリックします。 以下の例でターミナルウィンドウに現れる hoge$ をmacOSのシェルプロンプトと呼び、キーボー入力を待ち受けていることを表す文字列です。
ターミナル.app
をドックに登録しておくとよいでしょう。
Pythonシェルを起動するには、Windowsのときと同じようにキーボードからコマンド文字列 python
を入力し、最後にRETURNを押します。 ターミナルウィンドウに以下のように表示されます。
hoge$ python Python 3.6.0 (default, Jan 21 2017, 09:05:11) [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>>
この例では、macOSでのPythonのバージョンがPython3.6.0であることを示しています。 ターミナルウィンドウからコマンドpython
をキーボード入力すると、WindowsやmacOS共にPythonシェルのプロンプト>>>
が表示され、Pythonステートメントの入力を待つ状態になることがわかりました。
Pythonシェルを終了する
Pythonシェルの利用を紹介する前に、まずPythonシェルの終方法を知っておきましょう。
Pythonシェルを終了するにはプロンプト
>>>
の後にコマンドquit()
またはexit()
を入力してRETURNを押します。
>>> quit() C:\Users\hoge>
上の例は、Pythonシェルプロンプトにコマンドquit()
を入力すると、Python動作を終了してWindowsシェルに戻った様子です。 Windowsシェルのプロンプトが返ったことに注意して下さい。 macOSの場合もPythonシェルの終了はまったく同じです。
以上で、WinodwsでもmacOSでもターミナルウィンドウから同じコマンドpython
を入力してPythonシェルを起動することがわかりました。 今後、WinodwsやmacOSのシェルプロンプトの文字列を象徴的に記号Terminal>
で代表させることにします。
Pythonシェルでステートメントを実行する
Pythonプログラムを書く前に、Pythonからの応答が直ちに確認できるPythonシェルの利用がお勧めです。 ステートメントをファイルに書いてPythonに実行させる方法はこの後で紹介します。
Pythonシェルでステートメントを実行するには、Pythonシェルプロンプト >>>にPythonステートメントをキーボード入力します。 ステートメントの終了やまたは区切りとしてRETURNを押して、ステートメントを入力し終わると応答が計算結果として返ります。
大切なことですが、しばらくは
- キー入力は直接入力(半角入力)モードで入力することとし、
- 空白文字を含めて日本語文字は入力しない
Pythonでは日本語文字列を含む多彩な文字列を処理することができます。ただし、Python2ではプログラムの実行に関わらないコメントであっても日本語文字列を使う場合にはその旨の宣言が必要です。全角空白を混入させるなど思わぬエラーを生じさせないように、当面は日本語文字列(全角文字)を入力しないようにします。
では、以下のように(あるいは適当に修正して)Pythonシェルに入力して、その応答結果を吟味して下さい。 明かなエラーが発生しない限り、入力とその応答の関係に注意する程度にして、ここでは深い理解は必要はありません。 Pythonのステートメントをどのように書けばよいかが、そもそもここでの目的なのですから。
今後は行末の改行(RETURN)の入力は省きます。 それで誤解が生じることはほとんどないはずです。
数の計算
まず電卓のように数値の加減乗除を計算をしてみましょう。 足し算と引き算は記号 +と-で、掛け算はアスタリスク*で行います。 割り算には2つの記号を使い分けます。 スラッシュ /を使うと整数同士の割り算結果は小数点が付き、整数同士の割り算に2つスラッシュ//を使うと整数商が返りますパーセント%は整数同士の割り算での剰余を計算します。
[注意] Python2では整数同士の割り算にスラッシュ /を使っても整数商がかえります。
>>> 12+29 41 >>> 34*4 136 >>> (21+3)*12 288 >>> 12/7 1.7142857142857142 >>> 1/5+1/3 0.5333333333333333 >>> 53 // 12 4 >>> 21 % 12 9
- 21+3*12 と 21-3*12 の計算結果を比較して、演算の優先順位を確かめなさい。
- 午後9時から15時間経過した12時間制(午前午後を浸かる)時間を求めなさい。
変数と代入
プログラム言語の「変数」は数学における変数ではありません。 プログラミングが数学を必要するとう誤解を生じさせている主たる要因に用語の混乱があります。
2つの整数123と456の四則演算 123+456、123-456、23*456、123/456 のために毎回値を入力するのも面倒です(2数の桁数が 123456789 と 987654321 のようならどうでしょうか)。 プログラム言語では、値(データ)を格納する容れ物を用意し、これに変数名という名札をつけて目的の値を格納しておくことができます。 こうして保管しておいて値は変数名を使っていつでも利用(参照)することができます。 変数名としてどのような記号列が使えるか、どんな方針で命名するかは、後で紹介します。
変数という容れ物に値を代入するという操作を代入といい、プログラム言語における基本ステートメントの1つで、次のように
変数 = 値
記号 = を使って代入演算を表します。 値が代入される変数名を左に、代入する値を右に置くことに注意してください。 「数学」のように、左辺と右辺が等しいという等号とは全く意味が違うことに注意してください。
次の例を確かめてください。 変数 a, b, c を使って計算をしています。
>>> a=123 >>> b=456 >>> a 123 >>> b 456 >>> a+b 579 >>> a-b -333 >>> a*b 56088 >>> a/b 0.26973684210526316 >>> c=a+b >>> c 579 >>>
最後の例のように、値が代入してある変数を使って、その値をさらに別の変数に代入数することができます。
Pythonシェルでは、値が代入されている変数を入力すると(プロンプト>>>
に変数名を入力してRETURNを押す)、その値が返ることに注意して下さい。
演算記号 =
は代入操作を表し、数学で使う等号(左辺と右辺が等しい比較)とは違うことを再び協調しておきます。
Pythonなど多くのプログラム言語では代入演算に記号 = を使いますが、プログラム言語Rでは、代入を表すために記号 <-(左矢印)を使うことができ、代入操作の意味を分かりやすく記述できる工夫をしています。 プログラムすることが数学的知識を要求するかのような誤解を生んでしまうのは、変数という用語だけでなくこうした記号の使い方にも起因してそうです。
- 上の例の最後で、変数 a と b に格納された値の和を変数 c に代入しています。 この操作のあとで、変数 a に別の値を代入、たとえば a=a+1 と代入したとき(記号 = は代入操作なのでこうしても意味があるんです)、変数 a の値がどうなっかを確認してみなさい。
- その後に、変数 c の値がどうなっているかを確認して、その結果を説明しなさい。
プログラミングと数学とはまったく違う行為です。 プログラムに数学的目的を行わせたり経済学的観点を導入したり、芸術的視点を取り入れることも可能で、今日では多くの分野での取り組みあります。
ところで、値が代入されていない変数を参照(アクセスしようとすること)したらどうなるでしょうか。
>>> x Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'x' is not defined >>> x=19 >>> x 19
このように、変数が定義されていないというNameErrorエラーが生じます。 ステートメント内に変数を含ませるためには、それ以前に目的の変数に値が代入されていることが必要です。 プログラムの達人であってもエラー発生を避けることはできません。 初心者はエラーに遭遇すると狼狽します(エラーにどう対処してよいかわからない者が初心者です)。
エラーは最良の学習機会です。
ステートメントを自分で入力すると時間はかかりますが、思わぬ入力ミスによってエラーが生じることになり、プログラム動作を理解するための格好のチャンスです。
エラーメッセージに目をつぶらないようにしましょう(^^)
文字列
コンピュータで数値が計算できることは自然なように思われますが、文字、その連なりとして文字列を取り扱うこともできます。 一重引用符 ' または二重引用符 " で文字列を囲みます。 1文字であっても文字として取り扱うためには引用符で囲まねばなりません。
>>> 'a' 'a' >>> a='I am a girl.' 'I am a girl.' >>> "You are a boy." 'You are a boy.' >>> b="I'm Japanese." "I'm Japanese."
繰り返しを実行させる
この段階では、まだプログラムしている感触は得られてないのではないでしょうか。 詳しい説明は抜きにして、以下でプログラムの香りを感じてみましょう。 Pythonシェルにはかえって入力しづらく、このあとで紹介するステートメントをファイルに書いて実行する方がうんと簡単です。
言葉で説明すると次のように複雑になります。 実際に入力して以下のPythonシェルの様子を確かめてください。 まず for k in range(5): と入力(コロン : があることに注意)してRETURNを押すと、次行に ... が表示されてキーボード入力を待ち受ける状態になります。 そこで、半角空白を4回入力して字下げ(インデント)してから、文字列 print("Hello, Python") を入力してRETURNを押すと、次行に for に揃って ... が表示されます。 前行の print に揃えるようにインデント(「同じ数」だけ半角空白を4つの入力)して print("I'm happy") を入力してRETURNを押します。 さらに、次行に現れる ... には、そのままRETURNを押してステートメントの終わりとします。
入力の様子と、その結果は次のようになります。
>>> for k in range(5): ... print("Hello, Python") ... print("I'm happy") ... Hello, Python I'm happy Hello, Python I'm happy Hello, Python I'm happy Hello, Python I'm happy Hello, Python I'm happy >>>
上の例はPythonにとっては次の3行からなる1つのPythonステートメントの実行結果を表しています。 行頭にある for に比べて、2つの print は同じ幅で字下げされていることに注意して下さい。
for k in range(5): print("Hello, Python") print("I'm happy")
その結果、文字列 Hello, Python と I'm happy とが5回繰り返されて計算されたのです。