Pythonに挑戦(2)

Pythonに挑戦(2)

Pythonに挑戦(1)では、Pythonの導入について書きました。きょうは、Pythonプログラミングの第1歩である、IDLEというシステムを使ってみます。
Pythonが導入されていれば、IDLEは自動的に組み込まれているそうなので、Windowsのスタートメニューで(Windows11の場合は、スタートメニューの[すべてのアプリ]をクリック)[Python3.12]を探し、右側のマークをクリックすると出てくるリストからIDLEを選んでクリックすると、IDLEシェルのウィンドウが出てきます。ここで、

2*1024

と入力すると、

2048

と出てきます。

2**1024

と入力すると、

3016028602530220424421062271578867838525126125874252890898307532480811172246863646685486789069132871854112712507200418582406770249989531589552959798883475511096677545853948017425342019529539590198394174553047792145043723038206885734470238620775335376572758801465612196212014773714996912064944617579072807182486470656

と出てきます。

そこで、
Pythonに何かやらせてみたいわけですが、何ができるかを考えるために、Pythonの文法を一通り見渡していると、正直、Pythonがプログラミングの標準言語になるとはとても思えませんね。種々の処理ができるようですが、どの処理をとっても、複雑怪奇で、C言語なら単純素朴にできる(その代わり、自分で色々な処理を作らなければいけない)ことが、既に用意されている中からプログラミングすることになり、色々な前提を必要とするようで大変です。高校の先生の困惑する表情が目に浮かぶようです。そもそも、オブジェクト指向、ということからして、高校の先生の説明で生徒が納得できるんでしょうか?

とりあえず、簡単な住所録を作ってみようと思います。
Cの構造体の代わりに、Pythonではclassを使えばよさそうです。
まず、
name(名前)postcode(郵便番号)address(住所)telno(電話番号)というメンバーを持つclassを、personという名前で作ってみます。IDLEを起動して、FILEメニューで[New File]をクリックしてファイル入力モードのウィンドウを開き、下記を入力します。Pythonでは、各行先頭の文字下げでプログラムの構造を示します。文字下げに注意してください。

class person:
def __init__(self, name, postcode, address, telno):
self.name = name
self.postcode = postcode
self.address = address
self.telno = telno
def show(self):
str1 = “氏名:{0} 住所:〒{1} {2} 電話{3}”.format(self.name, self.postcode, self.address, self.telno)
print(str1)

まず、コンストラクタと言うのだそうですが、personという構造の1つのデータを作るときの手順を__init__という関数名で定義します。定義するときは、defをつけてmthod名を書きます。他のオブジェクト指向言語では、コンストラクタはnewというmethod名になっていることが多いのですが、Pythonの場合は、__init__というmethod名に決まっています。この関数(method)の最初の引数は、selfにします。こういう約束のようです。ここでは、2番目、3番目、4番目、5番目の引数として、self, postcode, address, telnoを指定します。Pythonでは、データの型を意識しないのですが、郵便番号など106-0033のように‘-‘が入ったり先頭が‘0’になったりするので、4つの引数はいずれも数値ではなく文字列です。
__init__()というmethodでは、住所録の1つのデータを作るときに、selfの、name, postcode, address, telnoに、引数で指定されたデータを格納します。C言語の構造体とは違って、最初から構造を作るのではなく、self.nameが出てくると、personという構造の中にnameというデータの格納場所を作ります。self.postcodeが出てくると、personという構造の中にpostcodeというデータの格納場所を作ります。
さらに、住所録を表示させるための
methodとして、showという名前のmethodを定義します。このmethodも最初の引数はselfにします。ここでは、表示の仕方を制御することはせず、引数はselfのみです。表示は、str1という名前の文字列をprint()関数で表示させるのですが、

str1 = “氏名:{0} 住所:〒{1} {2} 電話:{3}”.format(self.name, self.postcode, self.address, self.telno)

として、str1に表示させるための文字列を設定します。氏名:{0} 住所:〒{1} {2} 電話:{3}”の部分は、表示のさせ方を指定する文字列で、この文字列のmethodとしてformat()という関数を起動するので、文字列の後ろ(formatの前)‘.’がついています。format() methodには4つの引数がついていますが、表示指定文字列の{0}, {1}, {2}, {3}が順番に4つの引数を指定しています。{0}self.nameです。単に、“name”と書くのではだめで、“self.name”(selfというオブジェクトのnameという要素だという意味です)などとしなければいけないことに注意します。
さて、これで、
personというデータ構造とmethodを定義したわけですが、このclass定義記述をファイルに格納することになります。

Pythonでは、プログラムの階層をそのままディレクトリ構造で管理します。最初は、目的ごとにディレクトリを作り、全部のモジュールを同一ディレクトリに入れておくのがよさそうです。そこで、pythonというディレクトリを作り、その中にaddressbookというディレクトリを作り、Fileメニューの中の[Save As…]をクリックして、\python\addressbookに移動して、ここに今作成したclass定義をadclass.pyという名前で格納します。

次に、この
adclass.pyを使ってデータを作成し、住所録内容を表示させてみます。さらにIDLEのファイルメニューで[New File]をクリックしてファイル入力モードのウィンドウを開き、下記を入力します。

import adclass
a = adclass.person(“
青木三郎“, “104-0751”, “東京都中央区銀座4-10-35″, “03-1234-5678”)
b = adclass.person(“
鈴木七郎“, “244-0255”, “東京都大田区西六郷7-8-92″, “03-8765-4321”)
a.show()
b.show()

最初のimport adclass(“.py”を付けません)adclass.pyの記述を使ってプログラムを書く、ということを宣言します。これがないと、adclass.pypersonというデータ構造を使うことができません。person class__init__というmethodの引数の記述に従って、name(氏名), postcode(郵便番号), address(住所), telno(電話番号)の順にデータを記述します(なお、住所氏名電話番号はもちろんデタラメです)
但し、
personというclassは、adclassで定義されたものを使うので、personの前に、“adclass.”を付けます。a = adclass.person(……で、personという構造のデータを1つ作ります。このデータをインスタンスと言います。aという名前のインスタンスが作られます。同様に、b = adclass.person(……で、personという構造の別のインスタンスをbという名前で作ります。
次の
a.show()という関数は、aというインスタンスをpersonshow()というmethodを使って表示させる、という意味です。b.show()とすると、bというインスタンスについて表示させることになります。このプログラムは、先の\python\addressbookというディレクトリに、adbook.pyという名前を付けて格納します。ここで、adbook.pyを編集しているウィンドウの[Run]メニューの中の[Run Module]をクリックすると、このプログラムを実行して、IDLEのウインドウに、

氏名:青木三郎 住所:〒104-0751 東京都中央区銀座4-10-35 電話:03-1234-5678
氏名:鈴木七郎 住所:〒244-0255 東京都大田区西六郷7-8-92 電話:03-8765-4321

と表示されます。きょうは、ここまでにします。これだけでも、初学者にとっては大変です。


  ブログTOP  TOPページに戻る
各問題の著作権は
出題大学に属します。

©2005-2023
(有)りるらる
苦学楽学塾 随時入会受付中!
理系大学受験ネット塾苦学楽学塾
(ご案内はこちら)ご入会は、
まず、こちらまでメール
お送りください。

【広告】 ここから広告です。ご覧の皆さまのご支援ご理解を賜りたく、よろしくお願いいたします。
【広告】 広告はここまでです。
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする