2020年12月11日
Pythonプログラミングをはじめる
記事内容の出典:フリーテキスト「Python3入門」
このページの更新:2020/12/31
Pythonプログラミング環境の準備
Google ColaboratoryとGoogleドライブ(Google Drive)があれば手軽にPythonプログラミングを始めることができます.
Google Colaboratory
Google ColaboratoryはGoogleが提供するサービスで,Pythonプログラミングのための機能を提供しています.
URL→https://colab.research.google.com/
(GoogleColabのウィンドウ)
このサービスを利用すると,手元のPCにPython実行環境をインストールしなくても十分な形でPythonのプログラミングができます.また,手元にPC(パソコン)が無くても,タブレット端末やスマートフォンなど,Webにアクセスできる端末があればPythonのプログラミングができます.
Googleドライブ
GoogleドライブはGoogleの自分のアカウントにデータを保存するためのクラウドストレージ(ネット上のデータ保管場所)です.
URL→https://drive.google.com/
(Googleドライブのウィンドウ)
Google Colaboratoryは,Googleドライブと連携することができ,Googleドライブに保存されているデータをPythonのプログラムの入力データとして読み込んだり,Pythonのプログラムから出力するデータを保存することができます.
ノートブックを使ったプログラミング
Google Colaboratory(以下 Colab と呼ぶことにします)では「ノートブック」というものを用いてプログラミングします.ではさっそく,Colab で新規のノートブックを1つ作ってプログラミングを試してみましょう.
Colab のウィンドウの左上にある「ファイル」メニューから「ノートブックを新規作成」を選びます.
(ノートブックの新規作成)
しばらくするとノートブックのウィンドウに変わります.
ノートブック内の のように表示されている部分が「セル」と呼ばれるもので,ここにPythonの文や式などを入力して実行します.
試しに「Python」という文字列を表示させるプログラムを実行してみましょう.表示されているセルに半角英数字入力で print('Python') と入力して,shiftキーを押しながらEnterキーを押してみます.すると,入力したセルの下に「Python」と表示され,次の入力のための新たなセルが表示されます.
(文字列の表示を実行したところ)
1つのセルには複数の行を入力して実行することができます.セルの中で単純に改行するにはEnterキーのみを押します.複数の行を入力して,まとめて実行する際はshiftキーを押しながらEnterキーを押します.
(複数のprintを実行したところ)
ノートブックの名前の変更
ノートブックの名前はウィンドウの左上に表示されています.新規に作成したノートブックの名前は「Untitled番号.ipynb」のようなものになっています.この部分をクリックすると名前を変更することができます.
保存されているノートブックの再利用
作業中のノートブックの使用を一度終了して,後で再び開いて(「ファイル」→「ノートブックを開く」の操作)プログラミングの作業を続ける場合は,ノートブック内のプログラムを全て再実行する必要があります.ノートブックの内容を再実行するには「ランタイム」メニューから「全てのセルを実行」を選択します.
プログラムのインデント
Pythonでは複数のプログラムの行を記述する際のインデント(字下げ)に注意する必要があります.例えば次のようなプログラムの実行を試みます.
print('1行目です.')
print('2行目です.')
print('3行目です.')
これをGoogleColab.で実行すると次のような結果が表示されます.
File "〈ipython-input-4-95e343bc812b〉", line 2
print('2行目です.')
^
IndentationError: unexpected indent
これはプログラムに誤りがあって正しく実行できずエラーとなった例です.
Pythonではインデント(字下げ)が意味をもっており,連続して実行する行は同じインデント位置から開始しなければなりません.上の例ではプログラムの2行目の開始位置が右にずれていることが原因でエラーとなります.正しくは次のようなプログラムにします.
print('1行目です.')
print('2行目です.')
print('3行目です.')
これを実行すると次のような結果が表示されます.
1行目です.
2行目です.
3行目です.
行の分割
長い文や式を複数の行に分割して記述するには「\」(¥と表示される場合あり)を使います.例えば
1+2+3+4+5+6+7+8+9+10
という式は次のように入力することができます.
1+2+3+\
4+5+6+7+\
8+9+10
このように,長い文や式の途中に「\」(¥と表示される場合あり)を入れた後で改行すると,ひとつながりの式とみなされます.
実行結果:
55
複数の文や式を1行に書く方法
複数の文や式をセミコロン「;」で区切って1行に記述することができます.(次の例)
print('1行目です.'); print('2行目です.'); print('3行目です.')
実行結果:
1行目です.
2行目です.
3行目です.
変数と値に関する基礎知識
Pythonでは,値を保持するための変数を使うことができます.変数に値を設定するにはイコール「=」を使います.(次の例)
a = 2
b = 3
c = a + b
print(c)
このようにイコールの右辺に計算式を記述します.計算結果は左辺の変数に代入されます.
これを実行すると次のように表示されます.
5
変数名には長い名前,例えば abc,vwxyz といったものを使用することができます.
変数に代入する値としては数値の他に文字列など様々なものがあります.文字列はシングルクオート「'」もしくはダブルクオート「"」で括ったもので,単語や文章などを表現する場合のものです.またプラス「+」で連結することもできます.
a = 'Python'
b = 'プログラミング'
c = a + b
print(c)
これは変数 a,b に文字列を代入し,それらを連結するプログラムの例です.これを実行すると次のように表示されます.
Pythonプログラミング
c に代入された連結結果が表示されていることがわかります.
print を使わずに変数の値を確認することもでき,その場合は変数名のみを記述して実行します.(次の例)
c
実行結果:
'Pythonプログラミング'
このように print を使わずに変数の値を直接表示すると生の値がそのまま表示され,文字列の場合はシングルクオート「'」で括った形で表示されます.
変数名には日本語が使用できます.(次の例)
あ = 3
い = 4
う = あ + い
print(う)
実行結果:
7
値が設定されていない変数を参照しようとするとエラーとなります.(次の例)
abcde
実行結果:
NameError Traceback (most recent call last)
〈ipython-input-10-ec11312386ad〉 in 〈module〉()
----> 1 abcde
NameError: name 'abcde' is not defined
このように NameError となり,これは「未定義の名前」を使用したことによるエラーであることを意味します.
変数の値の更新
既に値を持っている変数に対して別の値を代入すると,はじめに持っていた値は失われて後から与えた値に更新されます.(次の例)
a = 2
print( a )
a = 5
print( a )
これは変数 a に 2 を代入した後で 5 を代入する例で,実行すると次のように表示されます.
2
5
また変数を用いた計算の結果を,同じ変数に改めて代入する手法もしばしば用いられます.例えば上の例では a に 5 が代入されていますが,この a の内容を 2 だけ増やしたい場合は次のように記述します.
a = a + 2
print( a )
このときに間違えてはいけないことですが,上の計算式は「a と a+2 が等しい」という意味ではないことが重要です.イコール「=」記号はあくまで変数への値の割当てをするもので,決して「両辺が等しい」ということを意味するものではありません.上の計算式「a = a + 2」はまず右辺を先に計算して 7 という値を得た後,それを改めて変数 a に代入しています.すなわち変数の値の更新を行ったわけです.従ってこのプログラムを実行すると次のように表示されます.
7
このように,変数に設定されている値を使って計算した結果を再度その変数に代入する手法は頻繁に用いられるので,上の例の計算をPythonでは次のように簡略化した形で書くことができます.
a += 2 (変数 a の値を2だけ増やす)
同様に以下のような書き方も使用することができます.
a -= 2 (変数 a の値を2だけ減らす)
a *= 2 (変数 a の値を2倍にする)
a /= 2 (変数 a の値を半分にする)
(この他にもまだありますが,また記事を改めて)
値の代入を複数同時に行う方法
複数の変数にそれぞれ値を代入する場合,次のようにしてまとめて実行することができます.
a, b = 3, 4
print( 'a=',a )
print( 'b=',b )
実行結果:
a= 3
b= 4
このようにイコールの両辺にコンマで区切って変数や値を並べます.
値の型について
Pythonでは様々な種類の値を取り扱うことができます.また値の種類を型(あるいはタイプ,クラス)と言い,上で説明した数値,文字列はそれぞれ別の型の値です.
全く型の異なる値を同じ式の中で使用するとエラーとなることがあります.(次の例)
12 + '34'
実行結果:
TypeError Traceback (most recent call last)
〈ipython-input-11-3ade9454f1fa〉 in 〈module〉()
----> 1 12 + '34'
TypeError: unsupported operand type(s) for +: 'int' and 'str'
これは整数(int型)と文字列(str型)の値の足し算を試みたもので,プラス「+」の計算に int と str が混在していることによるエラーが発生しています.
プログラミングの世界では値(データ)の型を明確に意識します.例えばPythonでは整数の値の型はint 型,小数点付きの値(浮動小数点数)の型はfloat 型です.値の型を調べるにはtype 関数を使用します.(次の例)
print( type( 3 ) )
print( type( 3.14 ) )
実行結果:
〈class 'int'〉
〈class 'float'〉
このように
〈class 型名〉
という形で得られます.
printに関すること
print は関数であり,括弧を伴って「print( 表示内容 ) 」と記述します.python のバージョン 2 までは print は文であり,括弧の必要はありませんでしたが,python のバージョン 3 からは print は関数となり,括弧が必須となっています.
多くの資料やコンテンツでは python 2 を前提とした解説をしていることがあり,print の後の括弧を書かない表現がいまだに見られますので注意が必要です.次の例のように python 3 で print に括弧を付けずに実行するとエラーとなります.
print 'abc'
実行結果:
File "〈ipython-input-15-4453ae064588〉", line 1
print 'abc'
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print('abc')?
■ print 関数の引数
関数には,処理に必要となる値などを括弧を伴った引数と呼ばれる形で与えます.先に述べたとおり print も関数なので括弧を付けて実行するわけです.print 関数の引数には複数の値を与えることができ,例えば
print( 値1, 値2, 値3 )
といった形で,出力したい複数の値をコンマ「, 」で区切って与えることができます.このような形で複数の値を与えると,出力時にはスペース文字(空白文字)で区切った形で出力されます.(次の例)
print( 1, 2, 3 )
実行結果:
1 2 3
出力時の区切りをスペース以外のものにすることも可能で,その場合は「sep='区切り文字'」を print の引数に与えます.次の例は,出力時の区切り文字をコロン「:」にして print を実行するものです.
print( 1, 2, 3, sep=':' )
実行結果:
1:2:3
また「sep=''」(シングルクオート2つ)などとして区切り文字をなしにすることもでき,その場合は print の引数に並べた値が全て連結された形で出力されます.(次の例)
print( 1, 2, 3, sep='' )
実行結果:
123
念の為,この出力は百二十三の値を表示したのではなく,1,2,3 の数値を区切ることなく表示したものです.
print 関数は出力の後で改行します.先の例のように複数の print を実行すると,それらが改行表示されます.
print('1行目です.')
print('2行目です.')
print('3行目です.')
実行結果:
1行目です.
2行目です.
3行目です.
print による出力の最後で改行をさせないためには引数「end=''」(シングルクオート2つ)を与えます.(次の例)
print('1行目です.',end='')
print('2行目です.',end='')
print('3行目です.',end='')
実行結果:
1行目です.2行目です.3行目です.
それぞれの print の最後で改行せず,表示が右の方向に連結されていることがわかります.
print の引数「end=」は,出力の最後を指定するものであり,これに何か文字を与えることもできます.次の例では「end='/'」を与えて出力の最後にスラッシュ「/」を付けています.
print('1行目です.',end='/')
print('2行目です.',end='/')
print('3行目です.',end='/')
実行結果:
1行目です./2行目です./3行目です./
モジュール(ライブラリ)
Python言語はそれ自体が持つ機能は限られており,現実的なプログラミングの局面においては様々なモジュール(プログラムライブラリ)を読み込んで使用することになります.このモジュール(プログラムライブラリ)は,素のPython言語処理系に機能を追加するためのものと考えることができます.
実際にPythonは,機械学習,自然言語処理,深層ニューラルネットワーク,データサイエンス,Webアプリ開発などの分野に適したプログラミング言語であるとされていますが,それらの分野で役立つライブラリ(追加機能)が多数利用できることが理由です.
Python言語処理系にプログラムライブラリを読み込んで使用するには,それに先立って
import ライブラリ名
としておく必要があります.この作業は以後しばしば出てきますので,「import」が出てきたら「何かライブラリを読み込んで使う」と理解してください.
関数とメソッド
Pythonにおける処理の実行形式として重要なものに関数やメソッドという形があります.出力に頻繁に使用する print も関数の1つで,基本的には
関数名( 引数並び )
という形式を取ります.これに対して「メソッド」は,何らかのデータオブジェクト(例えば文字列など)に対して作用するもので,基本的にはドット「.」を用いて
作用対象のオブジェクト.メソッド名( 引数並び )
という形式を取ります.例えば文字列の長さを求める場合に使用する len は関数です.(次の例)
s = 'a:b:c:d:e'
len( s )
実行結果:
9
(9文字であるという結果が得られています)
また,ある文字を境にして文字列を分解するには split を使用しますが,これはメソッドです.(次の例)
s.split(':')
実行結果:
['a', 'b', 'c', 'd', 'e']
(分解結果の全要素がリストとして得られています)
プログラム中に書くコメント
「#」で始まる記述があると,この記号から行末までが単なるコメントとなり,その部分はプログラムとはみなされません.コメントはプログラム中に注釈やメモなどを記入する場合に用いられます.(次の例)
# printを実行します
print('出力内容') # 出力するためのプログラム
実行結果:
出力内容
print 関数の部分のみが実行されていることがわかります.
Python3 の基礎 − 超入門・再入門 −
【このカテゴリーの最新記事】
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/10401024
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック