三角形の面積を求める。三角形の面積を画面に出力する。実行結果は25.0どうでしょうか、プログラム中にコメントを書き込む感覚を掴めましたか?これからプログラムを作成する際はなるべくコメントを入れる癖をつけるといいでしょう。REPLを卒業してテキストエディタでPython3を書こう!この節ではテキストエディタを利用してPython3のプログラムを書く方法をご説明いたします。OSに付属のテキストエディタでも書けないことはないのですが、やはり機能的に辛いところがあるので、プログラム開発を前提として設計されているテキストエディタを利用されることを強くおすすめします。Xでも利用でき、Python3プログラミングに適している無料のテキストエディタとしてはATOMが最も人気です。これはWindows専用のテキストエディタではありますがNotepad++も人気のある無料テキストエディタですね。テキストエディタを使ったPython3プログラムの保存と実行方法Python3のコードを保存するには「.py」という拡張子を用います。保存時の文字コード(エンコード)は必ずutf-8を選んで下さいね。今時のテキストエディタはどんなものでも保存時の文字コードを選択できるようになっています。この後、テキストエディタでコードを書いた場合の実行方法を解説するので、いまのうちにテスト用のPython3ファイル(~.py)を予め作成しておきましょう。試しに任意のテキストエディタを開き、print(“test”)とだけ入力し、文字コード※1を必ずutf-8に設定した上で.pyの拡張子で保存します(ファイル名はなんでも構いませんがtest.py等とすればいいでしょう)。※1ATOMエディタを使っている場合は何も意識しなくてもデフォルトの文字コードはutf-8になっています。ファイル名.pyと入力します。ファイル名.pyと入力します。コマンドラインからPython3ファイル(~.py)を実行する方法とは別に、Python3をインストールしたときに付属しているIDLEというツールから実行する方法もあります。コマンドラインの使い方がいまいち分からない場合にはIDLEを使ってPython3ファイルを実行するといいでしょう。IDLEを使ってPython3ファイルを実行する方法1まずIDLEを起動します。Windows環境であれば[スタートメニュー>Python3.x>IDLE]を選択します。X環境の場合はSpotlightにIDLEとタイプして起動します。2下記の画像を参考に[File]>[Open]を選択します。3予め保存しておいたPython3ファイルを選択し、開きます。Module]を選択します。Shell上でプログラムが実行されます。ユーザーから入力を受け取る方法を学ぼう!ユーザーからの入力を受け取るにはinput()関数を使います。この関数を利用する上でのポイントはユーザーから入力された値は、例えそれが数値であっても必ずstr型(文字列型)だという点です。ユーザーが数値の10を入力しても内部的には“10”として扱われるのです。そのためユーザーから数値の入力を受け取り、その「文字列としての数値」をそのまま計算に利用しようとすると「文字列型の値」と「整数型などの数値」は計算することができないのでエラーになってしまいます。10*2は計算可能ですが、“10”*2は型の不一致で計算できないのです。そこで数値の入力を受け取った場合は、「文字列としての数値」をint型などに型変換してあげる必要があります。int型への型変換はint()関数を使うのでしたね!それでは以上の知識を踏まえテキストエディタを使ってユーザーからの入力を取得し、計算をした上で画面に表示するサンプルプログラムを書いてみましょう。コメントは必ずしも写し取る必要はありません。解説の都合上、多めにコメントを書いているためです。ユーザーからの入力を受け取り変数input_numに格納する。input("数値を入力して下さい。str型の数値をint型に変換し変数numに格納する。入力された数値の二乗を画面に表示する。ユーザーからの入力を受け取り変数input_numに格納する。input("数値を入力して下さい。str型の数値をint型に変換し変数numに格納する。入力された数値の二乗を画面に表示する。2)このサンプルプログラムを実行すると、「数値を入力して下さい。」と画面に表示され入力待ち状態になります。そこに半角で任意の整数値を入力すると二乗された値が画面に表示されます。input_numが受け取る数値はstr型なので、あとで計算時に型の不一致を起こさないように、int()関数で整数に変換した上でnumにその値をセットしています。あとは二乗して画面に出力するだけです。a**bで「aのb乗」という意味でしたね。制御構文1if文をマスターしよう制御構文とは条件分岐や繰り返し処理のことを意味します。今回はそんな制御構文の中でももっとも基礎にあたるif文を学びます。if文は条件分岐のための構文です。条件分岐とは「もし~ならば...する」という処理です。今までのプログラムではコード中に書かれた全ての処理を実行していましたが、if文を使うことで、ある条件下でのみ実行する処理を書くことができます。今月が誕生日月ならば画面に「おめでとう」と表示し、そうでないならば何もしない。いった処理が条件分岐の基本的な処理です。条件分岐をマスターすればさらに複雑なプログラムを書けるようになりますね!if文の構文は下記の通りです。「比較式」というのが出てきましたね。比較式は2つの値を比較演算子で比較します。「左辺と右辺が同じである」を意味する比較演算子は==です。比較演算子(==)の使い方に慣れておきましょう。REPL(IDLEでもOK)を起動し、下記の例文を打ち込んでみて下さい。3を入力するとTrueと返ってきますね。左辺と右辺が等しいので真(True)です。5と入力するとFalseと返ってきますね。左辺と右辺が等しくないので偽(False)ですねこのように比較演算子は左辺と右辺の関係性を評価し、TrueもしくはFalseという結果を返します。==以外にも比較演算子はいくつかありますのでまずそれらを眺めてみましょう。Falseちなみに比較演算子が返すTrue/Falseという値はbool型の値です。input("1から10の値を入力して下さい。#ユーザーから受け取った文字列型の数値をint型に型変換する。print("ERROR:1~10の整数値を入力して下さい。print("正しい数値を入力してくださりありがとうございます。input("1から10の値を入力して下さい。")#ユーザーから受け取った文字列型の数値をint型に型変換する。10):print("ERROR:1~10の整数値を入力して下さい。")else:print("正しい数値を入力してくださりありがとうございます。")まずはユーザーから1~10の値を入力してもらいます。その値をinput_dataに格納します。input_dataに入力されている数値はstr型の数値なので、これをint()関数で型変換し、変数numに格納します。if文ではもしnumが10より大きな値であれば、print(“ERROR:1~10の整数値を入力して下さい。なければprint(“正しい数値を入力してくださりありがとうございます。10)の評価結果はFalseになり、else:から下の行が実行されますよね。10)の評価結果はTrueになり、print(“ERROR:1~10の整数値を入力して下さい。”)が実行されますよね。実際に1~10の値(正しい値)を入力したり、15等の間違った値を入力してみて動作のイメージを掴みましょう。input("1か2を入力してください。#ユーザーから受け取った文字列型の数値をint型に型変換する。input("1か2を入力してください。#...1#ユーザーから受け取った文字列型の数値をint型に型変換する。#...4print("あなたは「2」を入力しましたね!")#1ではユーザーから文字列型の数値を受け取っています。#2では文字列型の数値をint型に変換した上でnumに代入していますね。#3ではnumの値が1ならばTrueとし、Trueのとき実行される処理としてprint(“あなたは「1」を入力しましたね!”)が指定されていますね。1)の結果がFalseの場合、else:以下の処理が実行されます。elif文を使ってもっと複雑な条件分析処理を書こう!【サンプルプログラム9-1】、【サンプルプログラム9-2】では、条件式が1つしかありませんでした。複雑な条件分岐を作ることもできます。そのためにはelif():文を使います。読み方は「エリフ」と読みます。elif():文は直前のif文またはelif():文の条件式の評価結果がFalseの場合、さらに条件式を追加して判断を行うのに用います。使い方はelif(条件式):とします。実際にサンプルプログラム写して実行してみた方がイメージが掴みやすいと思います。input("あなたの英語の点数を入力して下さい。input("あなたの英語の点数を入力して下さい。英語の点数が60点未満(0点~59点)の場合print("C-赤点です!再テストです!")一行目から順に【サンプルプログラム9-3】の挙動を解説していきますねまずinput_dataにユーザーからの文字列型の数値を受けとります。次に英語の点数を表すenglish_scoreにユーザーからの入力値をint型に変換した整数値を代入します。100):この式はおなじみのif文ですね。英語の点数が100点ならば、print(“S-満点です!すばらしい!”)という処理を行い、これでプログラム全体が終了します。elif():は直前のif文またはelif():文がFalseの場合にはじめて実行される条件式だからです。英語の点数が80点~99点の場合に処理が移ります。このとき、英語の点数が例えば85点ならば、print(“A-優秀な成績です!”)という処理を実行して、このプログラムは終わります。英語の点数が60点~79点の場合に処理が移り、改めてここで条件式が評価されます。ここで、上記のelif文の条件判定がFALSEならば、以下の2行が実行されます。英語の点数が60点未満(0点~59点)の場合print(“C-赤点です!再テストです!”)このサンプルプログラムを写して実行できたら、1-100の範囲内で様々な整数値を入力してみてプログラムの挙動をチェックしてみて下さい。elif文を用いた条件分岐の感覚が掴めると思います!if文の中にif文を入れる(入れ子のif文)if文の中に、さらにif文を入れることをif文を「入れ子」にすると言います。この節では「入れ子のif文」を学習していきましょう!下記のサンプルプログラムでは英語の点数が40点以上であれば合格。英語が40点未満であれば基本的には不合格。英語の点数が40点未満でも国語の点数が60点以上であれば合格。いうロジックをif文の入れ子で表現したものです。国語の点数は70点とします。print("英語の点数が40点未満でも国語の点数が60点以上であれば合格です。print("不合格です。print("英語の点数が40点以上なので合格です。国語の点数が60点以上の場合print("英語の点数が40点未満でも国語の点数が60点以上であれば合格です。国語の点数が60点未満の場合print("不合格です。英語の点数が40点以上の場合print("英語の点数が40点以上なので合格です。40):は英語の点数が40点未満ならばTrueですね。今回、英語の点数は15点と40点未満なので、Trueですね。このときFalseならば、下から二行目のelse文にジャンプし、print(“英語の点数が40点以上なので合格です。”)が実行され、プログラムは終わりますね。60):に処理が移行します。国語の点数は70点なので、この条件式の結果はTrueですね。画面には英語の点数が40点未満でも国語の点数が60点以上であれば合格です。国語の点数が60点未満の場合に飛びprint(“不合格です。”)が実行されますね。「if文の入れ子」についてイメージができてきたでしょうか!?条件式を複雑化するandとor今までの例題では条件式は(〇>▲)という形式の単一のものでした。andとorを用いることで条件式それ自体をより複雑化することができます。andは「かつ」という意味です。orは「または」という意味です。and/orを用いた条件式の書式は以下の通りです。(条件式2)):⇒条件式1か条件式2のどちらか一方が「真」か若しくは全ての条件式が「真」であれば全体としてTrue尚、条件式の個数に制限はありません。下記のような書き方もできます。(条件式4)):それでは【サンプルプログラム9-4】でif文を入れ子にすることで実現したロジックをorを使って実装してみましょう。ロジックは英語が40点未満の場合でも国語が70点以上であれば「合格」。