カテゴリー
Python

日付や時間のデータを取得する方法

この章では日付や時間のデータを取得する方法について説明します。
日付や時間を取得するにはdatetimeモジュールを使用しますので、プログラムの冒頭に9と記述してください。
datetimeモジュールは時間や日付に関するメソッドなどが入っているファイルです。
では例をみてみましょう。9 時間を取得するにはtimeクラスを使用します。99が代入されているaを9で出力すると9となります。
「時」「分」などの個別の要素を取得には以下の構文で記述します。99 結果は次の通りです。9
次は日付を取得する方法について説明します9 日付を取得するにはdateクラスを使用します。9

9 が入っているaを9で出力すると9となります。
「年」「月」などの個別の要素を取得には以下の構文で記述します。99 結果は次の通りです。9
次はdateクラスで今日の日付を取得します。9 今日の日付を求めるには9という構文で書きます。
例えばこれを9で出力すると9という形式で出力されます。
9結果は以下の通りです。9
次は日付と時間を両方取得する方法について説明します。99 日付と時間を取得するにはdatetimeクラスを使用します。9

9 が入っているaを9で出力すると9となります。
個別にそれぞれの要素を取り出す方法はdateクラス,timeクラスと同じなので参考にしてください。
結果は以下の通りです。9
次はdatetimeクラスで今日の日付や時間を取得する方法について説明します。99 今日の日付を求めるには 9 と言う形式で書きます。
個別にそれぞれの要素を取り出す方法はdateクラス,timeクラスと同じなので参考にしてください。
結果は以下の通りです。9
次の例は今日の日付や時間を元に「今日から何日後の日付や時間」「今日から何日前の日付や時間」を取得する方法です。9 今日の日付と時間を取得するには9と書くことは説明しましたが、「今日から何日後の日付や時間」「今日から何日前の日付や時間」を取得したい場合は9という構文で書きます。
例えば1日後の日付や時間を得たいのであれば9と書き、1日前の日付や時間を得たいのであれば9と書きます。9 結果は次の通りです。9

カテゴリー
Python

クラスの継承について知ろう2

この章では親クラスの変数を子クラスで初期化する方法について説明します。99999999 子クラスの中で親クラスの変数と子クラスの変数を子クラスの中で初期化したい場合は以下のように書きます。9 9子クラスのinitメソッドの引数の内、a,c,fが親クラスのインスタンス変数の初期化に使われて、残りのeが子クラスのインスタンス変数company1の初期化に使われます。
ですので、オブジェクトの引数は4つになります。9 図にすると以下のようになります。9 結果は次の通りです。9

カテゴリー
Python

クラスの継承について知ろう1

この章ではクラスの継承について説明します。
親クラスの機能を引き継ぐクラスであるサブクラスを作成することを継承といいます。
親クラス(スーパークラスとも言います)とは元のクラスのことで、以下の例ではBankクラスがこれに該当します。
サブクラス(子クラスとも言います)とは親クラスの機能を引き継いだクラスです。
以下の例ではShoukenクラスがこれに該当します。
子クラスは親クラスのメソッドや変数を全て使うことができますので、子クラスでは親クラスのメソッドや変数をあえて書く必要はありません。
子クラスではゼロから親クラスにあるメソッドや変数を作らなくていいので、プログラムがすっきりします。
BankはShoukenを内包しているので継承関係が成り立つわけで、まったく関係ないクラス同士を継承させても意味はありません。
例えばCarクラスとBankクラスは全く機能が違うので、継承関係にしても意味がありません。
では例をみてみましょう。9999999 結果は次の通りです。9 クラスの継承は以下の構文で書きます。9 例では9の箇所です。
以下の通り、子クラスのメソッド内では親クラスの変数を使うことが出来ますが、形式は9です。9 子クラスは親クラスのメソッドや変数を全て使うことができますので、以下の通り子クラスのオブジェクトから親クラスのメソッドを使うことができます。9
次にオーバーライドについて説明します。
子クラスでは親クラスのメソッドと同じ名前で内容だけ違うメソッドを作成することが出来ます。
これをオーバーライドと言います。
メソッド名は変えずに、子クラス独自の内容に変えることが出来ます。99999

カテゴリー
Python

クラス変数とクラスメソッドについて知ろう

この章ではクラス変数とクラスメソッドについて説明します。
「クラスについて知ろう」の「補足」では3つのオブジェクトであるbanks, banks2, banks3を作成しましたが、この中のzandaka変数は3つのオブジェクトであるbanks, banks2, banks3ごとに違った値を保持することができました。
クラス変数はオブジェクトが何個あってもクラスに共通の1つの変数です。
では例をみてみましょう。999 この例のクラス変数はgoukeiとzandaka です。
インスタンス変数はselfに関連付けされていましたが、クラス変数はclsに関連付けされて記述されます。
クラスメソッドはクラスメソッドにしたいメソッドの上に9を付けます。
そしてクラスメソッドの第一引数にはclsを記述します。
clsはクラス自身を意味します。
これはインスタンスメソッドがselfを付けるのと同じ理由です。
次にクラス変数へのアクセス方法について説明します。
クラス変数に値を入れたいのであれば9と言う形式で書きます。
例えばクラス変数zandakaに値を設定したい場合には9と書きます。
次にクラスメソッドへのアクセス方法について説明します
クラスメソッドにデータを入れたいのであれば9と言う形式で書きます。
例えばnyuukin メソッドにデータを入れたいのであれば9と書きます。
このようにクラス変数とクラスメソッドはオブジェクトを作成しないでもクラス名でアクセスすることができます。
この例では何回訪問したかをカウントするcountメソッドがありますが、このメソッドはgoukei変数にそのカウントした数が保存されます。
Bank.count()が2回書かれているので2個目のgoukei変数は2になります。
インスタンス変数みたいにオブジェクトごとにデータが変わることはなく、goukei変数はただ一つのデータだけを持ちます。
zandaka変数も同じ事です。
結果は以下の通りです。9

カテゴリー
Ruby

クラスについて知ろう

この章ではクラスについて説明します。
今までのプログラムでは変数と関数を扱ってきましたが、クラスという機能を使うことで多くの変数と関数を1つの機能体として働かせてデータを処理することができます。
クラスとは物を作る設計図に例えられます。
設計図は車や家や鉛筆をつくる場合に必要ですが、この設計図に当たるものがクラスです。
ではクラスについて詳細に説明します。
車や家や鉛筆の中には色々な部品が含まれていますが、それらの部品には「状態」や「ふるまい」があります。
例えば、鉛筆であれば「状態」は鉛筆の形、芯、線の濃さなどで、「ふるまい」は線を引く、削るなどの動作です。
その「状態」や「ふるまい」をクラスという設計図に書いていきます。
「状態」を変数で書き、「ふるまい」をメソッドで書くことになります。
その「状態」や「ふるまい」に指示を出すのはオブジェクトです。
例えば鉛筆の「線を消す」など具体的な指示をオブジェクトという司令塔から出します。
オブジェクトの詳細はこの後に説明します。
ではクラスの基本形から説明します。9 〇クラス名は大文字で付けることが慣習になっていますが、自由に付けていただいて結構です。
〇クラスの中に変数やメソッドを書いていきます。
メソッドは関数の別名だと思ってください。9 〇この引数はクラスの中で使われるデータです。
〇引数は必要な場合には記述しますが、省略もできます。
ではクラスの例を見てみましょう。99 この例のクラスにはBankと言う名前が付いています。
そして、このBankクラスを使うためにはオブジェクトを作成しなくてはいけません。
クラスはただの設計図なので、これを動かすのがオブジェクトです。
それが9の箇所です。
オブジェクトを作った後は、そのオブジェクト変数を使って、クラスの中の変数やメソッドにアクセスすることができるようになります。9 「クラス名(引数)」という形式で引数が 書かれていますが、この引数はオブジェクトを作成した時に実行するinitメソッドに渡されます。
このinitメソッドの中で設定した変数にオブジェクトで設定したデータを入れます。9 initメソッドの構文は次の通りです。9 〇 initメソッドの第一引数は引数があっても無くてもselfと書いてください。
selfはオブジェクト自身を意味します。
〇注意点はinitの前後の下線は2つ連続で繋がっています。
この例では下線が1本に見えますがテキストエディタの表記のせいです。
〇 initメソッドはPythonで機能が与えられているメソッドですが、nyuukinメソッドやshukkinメソッドは自分で作成したメソッドです。
ではプログラムの説明をします。
banks=Bank(1200000)のようにオブジェクトを作成すると同時に引数である1200000がinitメソッドの引数であるaにセットされ、self.zandakaに代入されます。
initメソッドやnyuukinメソッドなどのメソッドの中の第一引数には必ずselfを設定します。
また、メソッドの中にクラス内で設定した変数がある場合はその変数にも9と言う形式でselfを付けます。
この例では9の箇所です。9 「self.zandaka」のようにselfに関連づけられている変数をインスタンス変数と言います。
次はメソッドにデータを入れる方法について説明します。9 「オブジェクト.メソッド(引数)」と いう形式でクラスの中の以下のnyuukinメソッドを呼び出して、9に15000を足す動作を行っています。9 このようにオブジェクトから呼ばれるメソッドをインスタンスメソッドと言います。
次に以下の説明をします。9 クラスの中のshukkinメソッドを呼び出して、zandakaからkの値である10000を引く動作を行っています。9 そして最後に9 の箇所で、以下のshowメソッドを実行しています。9 showメソッドはzandakaの値をreturnで呼び出し元に返すだけのメソッドです。
結果は以下の通りです。9 先ほどの例ではzandakaという変数が初めから定義されていますが、実はこれらの変数は初めからクラスの中で定義しなくても、後からでも付け加えることができるのです。
例えば「ginkou」という変数を付け加えようとする場合には9と言う形式で付け加えることができます。
例えば以下のように書きます。9 では例をみてみましょう。999 このginkou変数はshowメソッドで使われているのが分かります。
次の例に進みます。
インスタンス変数は前の例の9の代わりに以下のようにクラスの中に初めから設定しておくことも出来ますので次の例をみてください。999 この例のようにクラスの中にインスタンス変数を初めから設定することができます。
クラスの中で変数を設定する時には変数の前にオブジェクトを付ける必要はありません。9 次の箇所の説明をします。9 このようにオブジェクトからクラスのインスタンス変数の値を取得することもできます。
クラスの中の変数の値を取得するには9という形式で書きます。9 これまでの例ではオブジェクトは1つだけでしたが、以下のように複数のオブジェクトを作成することができます。
以下の例では複数のオブジェクトごとにzandaka変数に値を入れていますが、これらのオブジェクト間で値の共有はありません。
つまり、新しくオブジェクトを作ったら、前のオブジェクトで使われていた変数の値は使われることはありません。999999

カテゴリー
Python

ファイルを読み書きしよう

この章ではファイルを読み書きする方法について説明します。
Pythonではプログラムでファイルを作成したり、ファイルの読み書きをすることが出来ます。9 初めにファイルの中身を読み込む方法について説明します。
pyファイルの他に「test.txt」を用意します。
ファイル名は自由に付けていただいて結構です。
では例をみてみましょう。9 結果は次の通りです。9 ファイルを開くにはopen関数が必要です。9 「モード」にはファイルをどのような状態で開くのかを指定します。
例えば「r」ですと、読み込み専用で開きます。
例では「test.txt」の中身を読み込みたいので、モードは「r」にしています。
モードは他にも以下の種類があります。
99999
次にファイルの内容の読み込み方法について説明します。
ファイルの内容を読み込むためのメソッドは3種類あります。
99例ではreadメソッドを使っていますが、このメソッドはファイルのすべての内容を読み込むので、9で読み込んだ内容を変数dに入れて、9で出力しますと「test.txt」の内容が出力されます。
そして、ファイルを開いたら、閉じなくてはいけないので、close関数で閉じます。9
次はreadlinesメソッドを使って、ファイルを読み込む方法について説明します。9 readlinesメソッドはファイルの内容すべてをリストとして返すので、9で出力すると9になります。
ファイルの行の終端には改行文字が付いているので、for文で出力する時には以下のように改行されて出力されます。9 この改行文字を取り除きたいのであればstripメソッドを使用します。
このstripメソッドは文字列の前や後の改行文字や空白、タブなどを取り除いてくれます。9 先ほどの例をstripメソッドを使って書き直すと以下の通りです。9 結果は以下の通り、改行文字が取れていることが分かります。9
次はreadlineメソッドを使ってファイルの内容を改行文字までの1行を読み込み、文字列を出力します。9 readlineメソッドはファイルの内容を改行文字までの1行を読み込みます。9 結果は次の通りです。9
次はファイルへ書き込む方法について説明します。9 指定ファイルに文字列を書き込むにはモードを9で指定します。9 ファイルに書き込むにはwriteメソッドの引数に文字列を指定してください。
ファイルの中で改行したい場合は9のように改行文字を使用します。
この例ではモードに「w」を指定しているので、ファイルの中身をカラにして書き込みます。
結果は以下のように「test.txt」が書き替えられます。9
もう一つファイルに書き込むメソッドがありますので、次の例で説明します。9 ファイルに書き込むにはwritelinesメソッドの引数に文字列、リスト、タプルなどを指定してください。
writeメソッドの引数にリスト、タプルを指定するとエラーになります。9 結果は以下の通り「test.txt」が書き替えられます。9

カテゴリー
Python

変数のスコープについて知ろう

この章では変数の影響がどこまで及ぶのかを説明します。
変数にはスコープと呼ばれる有効範囲が存在します。
変数は関数の外で作成した変数と、関数内で作成した変数に分けます。
関数外で作成した変数はグローバル変数と呼ばれ、いつでも出力したり呼び出すことができます。
問題なのは関数内で作成した変数です。
これはローカル変数と呼ばれ、その関数内でしか使用することはできません。
また関数内と関数外で同じ変数名があった場合、つまりローカル変数とグローバル変数とが同じ変数名であった場合、関数内で優先されるのはローカル変数です。
では実際に例を見てみましょう。99 この例ではわざとグローバル変数の9とheikin関数の中のローカル変数gの2つの同じ変数名を用意しました。
関数の中の9で出力されるのはローカル変数の99です。
つまりグローバル変数gの値である34よりローカル変数の99の方が優先されます。
結果は以下の通りです。9 グローバル変数は関数内でも使用できますので、以下の例を見てください。99 先ほどの例からローカル変数のgを削除しました。
その場合はグローバル変数gの値である34が関数内のgで使用されます。
結果は以下の通りです。9

カテゴリー
Python

関数を使って星座は判定をしよう

この章では関数で星座の判定を作成します。9999 この例は星座の判定をjudge関数に任せています。
このように判定の部分を関数で作成することでコンパクトになり、プログラムがすっきりします。
では説明を始めます。
9ここでユーザーにデータを入力させます。
ユーザーに入力をさせる関数はraw_input関数です。
9「文字列」には画面に表示させたい文字列を入力します。
ここでユーザーが入力をするとその結果は文字列として変数に入ります。
999の中のbirthmonthのデータがjudgeメソッドの仮引数monthに入り、birthdayのデータがdayに入ります。
ここでmonthとdayを整数値に変換するためにint関数でキャストしています。
つまり、raw_input関数は文字列を返すので、ここでint関数で整数に変換します。
9namesでは星座名をリストで作成しています。
この配列内は山羊座から順番通りに並んでいます。
決して、ランダムに並んでいるわけではありません。
day1には各星座の月の末日をリストに入れています。
day2には1月から12月までの末日をリストに入れています。
99例えば仮引数のmonthに1が入り、dayに19が入っているとします。
9の部分ではcountが0の時にifの条件式trueになりますので、入れ子のif文の条件式の判定に入ります。
if文はこのように入れ子にすることができます。
つまり、初めのif文がtrueであればさらに入れ子のif文の条件判定に入ります。9 9の中のdayには19が入り、1周目の9にはday1の0番目の要素である19が入っていますので、条件式はtrueになり、nameにはnamesの0番目の要素である「やぎ座」が入ります。
例えばdayに19ではなく23が入っていると仮定すると9はfalseになるので、9の条件式の判定に入ります。
ここでday2[count]にはday2の0番目の要素である31が入っていますので trueになり、name には9に該当する星座が入ります。
9のcountには1周目では0が入っていますので9で余りを求めると1になりますので9になり、「みずがめ座」が入ることになります。
では9の詳しい説明をします。
「count + 1」をする理由は例えばmonthが1で、day が23の場合には99になりfalseになるので、elifのブロックに入りますが、1月は やぎ座と水瓶座しかなく、やぎ座ではないのならば水瓶座しかないのでnamesを1つ進めるために9で1を足しています。
len(names) を記述している理由は例えば9の中のcountに11が入ると9の箇所が12になりますが、9の箇所が無いと仮定すると9となってしまいますが、実際に9という要素はありません。
ですので、9の箇所で余りを0(12割る12で余り0)にして山羊座が出るようにしています。
つまり、該当する以下の余りの数字がnames配列の添え字になり、その該当するデータがnameに入ります。9 99結果は以下の通りです。9

カテゴリー
Python

関数について知ろう2

この章では関数について説明します。
関数とは引数と言うデータを受け取って、ある一定の処理を行い、戻り値を呼び出し元に返す命令のことを言います。
引数とは関数を実行するときに関数で使われるバラメータ(データ)のことを言います。
戻り値とは、関数を実行した結果、返される値です。
この章以前のint関数のような関数は組み込み関数と言いまして、Pythonによって初めから用意されている関数です。
例えばint関数は文字列を数値に変換する関数ですが、Pythonの内部機構でそのような働きを作ってくれています。
その他に自分で好き勝手に「ある働きを持った関数」を作ることができます。
これをユーザー定義関数と言います。
例えば消費税を自動で計算する関数を自分で作りたいとします。
その場合、商品の代金を関数に渡すと商品金額に消費税率を掛けた処理をして、その結果を返すという機能を持った関数を作ります。
関数の基本構文は以下の通りですが、このように関数の中に実行内容を書いていくことを「関数の定義」と言います。9 〇引数が無い関数もありますが、引数が複数ある場合はカンマで区切ります。9 〇引数が複数ある場合はカンマで区切ります。
〇関数は関数の定義を書いただけでは実行しません。
そこで関数を実行するためには関数を呼び出さなくてはいけません。
関数の呼び出しは9という構文で書きますが、引数が複数ある場合はカンマで区切ります。
引数が必要無い関数であるならば引数は省略出来ます。
引数を省略する場合もカッコを付けて9と記述します。
では実際に関数の例を見てみましょう。9 この関数は三教科の平均を求める関数です。
関数を呼び出すには関数名と同じ名前を付けて呼び出します。
上の例で言えば9の箇所です。
呼び出すことによって関数の中身が実行されます。
では順を追って詳しく説明します。99 引数である変数にはそれぞれ56、45、99が代入されています。
この呼び出し側の引数は実引数と呼ばれています。99 この関数側の引数を仮引数と言います。9 また、実引数と仮引数の変数名が同じでなくても問題ありません。
つまりnum1とe, num2とf, num3とgが 同じ変数名である必要はありません。
また、この関数内部の変数e,f,g,h,iのことをローカル変数と言いますが、このローカル変数は関数内部でしか使用することはできません。
ローカル変数を関数の外で使用するとエラーになります。99 結果は以下の通りです。9 99実行すると次のようなエラーが表示されます。9
次の例をみてみましょう。9 関数には9のように引数に初期値(デフォルト値)を設定することができます。
しかし、初期値は初期値を持たない引数よりも前で
設定してはいけません。
つまり、9のように初期値のある引数を初期値のない引数より前に記述してはいけません。
また、初期値にg=46が設定してあるために、以下のように第三引数を省略して呼び出すことが出来ます。9 結果は次の通りです。9
次の例をみてみましょう。9 例え関数で初期値を設定していても、呼び出し側で引数(実引数)を 設定していればこちらが優先されます。
この例では9の箇所で初期値を設定していますが、9では実引数で3つとも引数を設定しているので、こちらの引数が優先されます。
結果は以下の通りです。9
次は戻り値のある関数についての説明をします。
戻り値についてはこの章の冒頭で説明しましたが、関数を実行した結果、返される値のことです。
戻り値を返すためには関数の定義の中に9という形式で記述します。9
では例をみてみましょう。9 関数内で処理をした結果(戻り値)を呼び出した側に返すにはreturnを使います。returnの後に何かしらの処理があってもその処理は実行されないで、呼び出し元に返りますので注意してください。
つまり9は実行されません。
この戻り値を利用するには例のように変数(この例ではnum4)に戻り値を代入して使用するか、もしくは9のように変数に入れないで、直接出力することもできます。この例では3つの平均点であるiをreturnで呼び出し元に戻してnum4に代入しています。9
次は引数の無い関数について説明します。9 この関数は仮引数も実引数もありません。
ただ関数の中で処理されて、呼び出し元に値を返しているだけです。
このような関数も作成できることを覚えておいてください。9 結果は次の通りです。9
次は関数の引数にはリストも指定することができますので、次の例で説明します。9 リストを関数側に渡すには9のように実引数にリストを指定します。
以下のように書いても同じ意味になります。9 その後、関数側でも仮引数を設定します。
この例の場合はkです。
そのkの要素をfor文で一つ一つ取り出して計算しています。
結果は次の通りです。9
次の例もリストの要素を関数に渡すのですが、前の例はリストそのものを渡していましたが、今回はリストを分解してから関数側に要素を渡しています。9 呼び出し側の実引数であるリストに「*」を付けると、仮引数にはリストの要素が分解した状態で渡るので、仮引数は9のように4つ設定します。
結果は次の通りです。9
次は実引数が複数ある場合、仮引数もその数だけ書くのは大変ですが、この例で便利な方法を紹介します。9 では説明を始めます。
9のように引数が多数ある場合、関数側にも9と、書かなくてはいけないのは面倒です。
そこで、この仮引数を9と、書き替えることで複数の実引数をすべて引き受けることが出来ます。99 はタプルとして、9のように受け取るので、for文で分解することが出来ます。
結果は108です。

次は関数の引数にはディクショナリも指定することができますので、次の例で説明します。9 ディクショナリを関数側に渡すには9のように引数にディクショナリを指定します。
その後、関数側でも引数を設定します。この例の場合はaです。
そのaの要素をfor文で一つ一つ取り出して計算します。
for文ではディクショナリの値だけを使いたいので、keysメソッドでキーを取得して、その後に9という構文で値を得ます。
結果は33です。

カテゴリー
Python

isdisjoint関数について知ろう

この章ではaのセットとbのセットの2つのセットがあるとして、aの要素とbの要素が1つでも共通した要素を含んでいるかどうかを調べる方法について説明します。
では例をみてみましょう。9 aの要素とbの要素が1つでも共通した要素を含んでいるかどうかを調べるには9という構文で書きます。
共通した要素を含んでいればfalse、含んでいなければtrueを出力します。
isdisjointメソッドはfrozensetでも使うことが出来ます。
結果は次の通りです。9