ていき 変数に付ける名前には、半角アルファベットや数字、「一 ( アンタースコア ) 」を組み合 minutes = 初期値 竇変数の定義 るといい、次のように名前を指定して作成します。 変数を使うにはまず変数を作らなければなりません。変数を作ることを変数を定義す ・英数字と「」以外の記号が含まれる名前 ・先頭の文字が数字である名前 わせたものが使えます。ただし次のような名前は使えません。 の内容を変更したいときなどに使用します。 とを表す演算子は別にあります ( 86 ページ参照 ) 。代入は変数を定義するときや、変数 の「 = 記号」と違って、「等しい」という意味ではないので注意してください。等しいこ す。変数に値を記憶することを代入といい、「 = 」を代入演算子と呼びます。算数や数学 作成した変数には「 = ( イコール ) 」という演算子を使って数値を記憶することができま 意味わるような名前き付けよっ 自分たけしゃなく、他の人が見ても あとで見返したときに苦労するそ。 変数の名前を適当に付けると、 使われるのかがわかるような名前を付けることが望ましいです。 名前を変数に付けることができますが、ソースコードを見直したときにその変数が何に すが、なるべく使用しないようにしましよう。これらのルールに違反しなければ、好きな また、英文字の大文字と小文字は別の文字として区別されます。日本語も使用可能で 名前 ・ python で定義された予約語 ( Pyth 〇 n のプログラムで使う「 if 」や「 f0 「」など ) と同じ
数値を記憶しす ユーザーの命令どおりに計算するプログラムを作ってみ ましよう。ここでは計算を行う「式」の書き方や、数値 を記憶する「変数」の使い方を説明します。また、「数値」 や「文字」といったデータの型についてもここで学習し ましよう。 計算結果を表示してみよう 1 日は 24 時間、 1 時間は 60 分です。では 5 分は何時間でしようか ? 1 5 分は 60 分の や「 + 」はないので、「 x 」の代わりに「 * ( アスタリスク ) 」、「 + 」の代わりに「 / ( スラッシュ ) 」 算記号です。手で計算するときに使う「 x 」や「 + 」と同じです。ただし、半角記号には「 x 」 Python で計算を行うには演算子を使って式を書きます。演算子はひと言でいえば計 えんさんし 求めるプログラムを作ってみましよう。 このような計算は人間よりコンピューターのほうが得意です。そこで、分から時間を + 60 」という計算でもいいですね。 4 分の 1 なので、 1 時間の 4 分の 1 を計算すれば O. 25 時間という答えが出てきます。「 15 ☆計算に使われる基本的な演算子 を使います。 演算子 十 36 Chapter 足す 引く 掛ける 割る 算数や数学と たいたい同しね。 割り算は分数と考えれは わりやすいも !
2 - 3 数値き記憶して計算せせよう さっそくやってみましよう。 15 + 60 という計算をしてみます。 chap2. py p r i n t ( 15 / 6@) ( hap 「 2 PS C:\python> python chap2. py 9.25 PS ( : 、 thon> 0 実行結果 実行すると「 O. 25 」と表示されました。 15 + 60 の計算結果が p 「 int 関数によって表 示されています。計算は算数や数学と同じでに」と「 / 」が「 + 」と「 - 」よりも先に行われま す。計算の順番を入れ替えたい場合は「 ( ) 」で囲みます。 # 2 * 2 が先に行われるので結果は 7 p 「 i n t ( 3 + 2 * 2 ) # 3 + 2 が先に行われるので結果は 1@ p 「 i n t ( ( 3 + 2 ) print(2 / ()@ / 3 の ) # 6@/3@ の結果を 2 で割るので結果は 1 . chap2. py @@ 3 「 ( ) 」を使用する場合は「 ( 」と D 」の数が同じでないとエラーになります。上記の例で ありがちなのが、 p 「 int 関数の D 」を計算の D 」と間違えて D 」を少なく書いてしまうこ とです。どちらも同じ D 」なのでわかりにくいですが、 VS C 〇 de では「 ( 」にカーソルを 置くと対応する D 」の色を変えてくれるので、参考にしてエラーを起こさないように注 意しましよう。 また、上記の例では数値と演算子の間に半角スペースを入れていますが、これはソース コードを見やすくするために入れたもので、なくても正常に動作します。 文字と数値を一緒に表示してみよう 今度は文字列と数値を一緒に表示してみます。先ほど作った 15 分は何時間か計算す るプログラムを改造して、「 15 分は O. 25 時間です」と表示するプログラムを作ってみ ましよう。先ほどのプログラムの前後に「 15 分は」という文字列と「時間です」という文 字列を書いて、その間に「 15 / 60 」の結果を表示するように書きます。 python では文字列と文字列の間に「 + 」を挟むことでその文字列が連結されます。次 の例を見てみましよう。 p 「 int ( " おはようこざいます。 + " こんにちは。 ・ + ”こんばんは。” )
キーボードら数値き入力できるようにしよう 2 -4 入力値が何時間求め 3 フロクラムを作ってみよっ 対話型プログラムで「キーボードから入力した分が何時間かを求めるプログラム」を 作ってみましよう。次のサンプルを実行してみてください。 Cha p 「 2 chap2. py input ( " 求めたい分を入力してください : @@ 1 m i n u t e 5 print(minutes + ”分は” + str(minutes / 6@) " 時間です " ) PS C:\python> python chap2. py 求めたい分を入力してください : 0 質問文が表示され入力待ち 状態になる 質問文が表示されましたね。数値を入力してみましよう。 PS C:\python> python chap2. py 求めたい分を入力してください : 39 Traceback (most recent ( a11 last) : FiIe "chap2. py", line 2 , in く module> 6 の + " 時問てす " ) print(minutes + " 分一ま " + str(minutes / TypeError: unsupported operand type(s) for / : ・ str ・ and 'int' PS C:\python> 0 「 30 」と入力して〔新司キーを押すとエラーになってしまう 工ラーが出てしまいました。工ラーメッセージには「 st 「型と int 型の割り算はサポー トされていません」と表示されています。先ほども説明しましたが、 input 関数の戻 り値は st 「型です。つまり 1 行目で変数「 minute 引に代入したデータは、そのデータが 数字であっても、アルファベットであっても、漢字であってもすべて st 「型になります 「 minutesJ の中のデータが st 「型のまま 2 行目の「 minutes / 60 」を計算しようとして、 「 st 「型と int 型の割り算は計算できません」というエラーが出てしまったのです。 では、文字列を数値に変換してみましよう。文字列から数値への変換には int 関数を使 います。 chap2. py input ( " 求めたい分を入力してください : m i n u t e S m i n u t e 5 i n t ( m i n u t e 5 ) p 「 i n t ( 5 t 「 ( m i n u t e s ) + " 分は " + 5 t 「 ( m i n u t e 5 / 6@ ) + " 時間です " )
3 3 リストを使ってす っ . リストを使えば、規則性のない数値や文字列などもルー プ処理できるようになります。ここではリストの基本的 な使い方と、リストに記憶した数値を「バブルソート」 と呼ばれる方法で並び変える方法を説明します。 規則性がない 1 0 個の数値を表示してみよう さっきは fo 「ループや whi [ e ループを使って O ~ 99 の連続する 100 個の数値を表示 しました。今度は IO 個の数値を表示してみましよう。ただし、数値は連続していなくて、 何の規則性もないバラバラな数値 IO 個です。 これまでに説明した方法だと、規則性のないデータをループで扱うことはできません。 こういうときは python のリスト ( ⅱ st ) とループを組み合わせて使います。リストは [ ist 型というデータ型の一種ですが、単にリストと呼ぶことが多いようです。 インデックス リストは同じ型のデータの集まりを格納するためのもので、 1 つ 1 つに添字 ( index ) と呼ばれる O からはじまる連続した番号が振られています。変数を何個か横につなげて、 それに番号が振ってあるイメージですね。規則性のない数値をリストに記憶させれば、 添字を使ってループ処理をすることができます。また、リストの各添字ごとのデータ 1 エレメント つ 1 つを要素 (EIement) と呼びます。 19 15 66 21 70 規則性のない [0] [ 1 ] [ 2 ] [ 3 ] [ 4 ] リスト 添字 = 1 32 Chapter
数値き記憶して計算せせよっー 2 - 3 と なぞ せだ わメ 型 ^ hap 「 2 数値と ~ よ文字列で ~ よ デー 9 の型を意識しよっ 先ほど、「 st 「」「 float 」という単語がエラーメッセージ内に出てきましたね。これ らはそれぞれ「文字列」や「小数点を含む数値」といったデータの種類を表しています。 タイプ pyth 〇 n などのプログラム言語ではデータの種類を「型 ( Type ) 」といいます。どんなデー タにも必ず型が存在します。先ほどの例でいうと、「文字列」の型は「 st 「型」、「小数点 フロート を含む数値」の型は「 float 型」となります。プログラミングをするときは「今このデータ の型は何なのか」ということを常に把握しておく必要があります。 イント また、「 float 型」以外にも、数値の中には他にも整数を扱う「 int 型」、複素数を扱う コンプレックス rcom 可 ex 型」があります。先ほどの 15 分が何時間か求めるプログラムを思い出して ください。 p r i n t ( 15 / 6@) このプログラムに出てくる「 15 」も「 60 」も int 型です。そして結果として表示される 「 O. 25 」は float 型になります。
逆順のルーフを書いてみよっ 0 ~ 99 の数値を表示するプログラムを作りましたが、今度は表示順を逆にして、 99 ~ 0 の数値を表示するプログラムを書いてみましよう。「 ange 関数の 3 つ目の引数はカ ウンタ変数の増減量を指定できます。たとえば「 2 」を指定すれば、カウンタ変数は 2 ず つ増えていきます。マイナスの値を指定することもでき、 - 1 を指定することでループ fo 「カウンタ変数 in 「 ange ( ループ開始値 , ループ終了値 , 増減量 ) 繰り返す処理 ±for in 「 ange の書き方 ( 引数 3 つ ) を逆順にできます。 それでは、増減量に - 1 を指定して、ループを逆順にしてみましよう。 @@ 1 fo 「 i in range(100, 0 , chap5 . py 次のように修正して実行してみましよう。 p 「 i n t い ) ソースコードを c:\python\chap5-1 ・ py 100 99 98 97 4 3 2 1 Press an ke tO continue 0 数値の表示は逆順にはなった 確かに逆順にはなりました。が、今回作りたかったプログラムは「 99 ~ 0 の数値を表 示する」プログラムです。上の結果では「 IOO ~ 1 の数値を表示する」プログラムですね。 「 ange 関数を 2 つの引数で使ったときと同様に、「 ange 関数の 1 つ目の引数と 2 つ目の 変数を修正してみましよう。 1 20
5 - 1 同し処理き決まった回数繰り返そっ f0 「ルーフの開始値を指定してみよっ f0 「 in 「 ange では次のように、カウンタ変数の開始と終了の値を「 ange 関数の引数と して指定する書き方もあります。 ☆ fo 「 in 「 ange の書き方 ( 引数 2 つ ) fo 「カウンタ変数 in 「 ange ( ループ開始値 , ループ終了値 ) 繰り返す処理 「 ange 関数に 2 つ以上の引数を指定した場合、 1 つ目の引数はループ開始の数値、 2 つ目の引数はループ終了の数値を指定しています。実際にプログラムを書いてみると、 次のようになります。 ^ hap 帚「 5 chap5. py fo 「 i in range(10, 100 ) : p r i n t い ) @@ 1 @@ 2 PS C:\python> python chap5. py 19 11 12 13 96 97 98 00 から 99 までの数値が表示さ 99 PS ( : \ thon> れた 変数 i に開始値である 10 から次々と数値が代入され、表示されます。先の列と同じく、 指定したループ終了の数値の処理は行われません。この例では変数 i が lO ~ 99 のとき は繰り返し処理が行われますが、変数 i が 100 のときは処理が行われないので注意しま しよう。
0 リストの表示 その前に書いた f 〇「ループを流用してリストの内容を表示します。ここでは fo 「ルー プの中に fo 「ループが入った状態になっています。つまり内側の fo 「ループは外側の f 〇「 ループによって 9 回繰り返されます。そして、内側の fo 「ループの中にある 9 行目の式は 10x9 の 90 回繰り返されます。このようにループの中にループが入った状態を、多重 阯最後まで並べ替えてみよっ 9X1 び回繰り返し fo 「 i i n 1 i st IO 回のループ f0 「 j in„「 ange len(list)- 1 ) 9 回のループ ループまたは入れ子ループと呼びます。 大きな数値が右端から 2 番目の位置に移動します。つまり、これを何度か繰り返せば、最 えられていません。先ほどの状態からもう一度同じ比較と入れ替えと行うと、 2 番目に 一番大きな数値を右端に移動することができましたが、まだそれ以外の数値が並べ替 終的にはすべての数値が小さい順に並ぶようになります。 ☆ 2 度目 比較 15 6 6 21 19 70 33 44 3 0 15 66 21 19 70 33 44 3 0 15 21 66 19 70 3 3 44 30 15 21 19 66 70 33 44 3 0 15 21 19 66 70 3 3 44 30 2 97 2 97 2 97 2 97 2 97 15 21 19 66 33 70 44 3 0 2 97 15 21 19 66 3 3 44 70 3 0 2 97 15 21 19 66 33 44 3 0 70 2 97 15 21 19 66 3 3 44 30 2 70 97 ここで図をよく見てください。比較と入れ替えを行う回数が 1 回減っていますね。す でに一番大きな数値が右端に移動しているので、最後の入れ替えは必要ないのです。 1 38
同し処理き決まった回数繰り返う 5 - 1 回数が決まったループは f0 「 in range を使おっ pyth 〇 n のループには、 f 〇「文、 whi [ e 文があります。「 99 の数値を表示する」の レンジ フォー ように、繰り返す回数が決まっている場合は f0 「文と「 ange 関数を組み合わせた「 f 〇「 in 「 ange 」を使いましよう。 ☆ fO 「 in 「 ange の書き方 ープ終了値 ) fo 「カウンタ変数 in range( ル 繰り返す処理 0 「 ange 関数は f 〇「文の繰り返し処理に合わせて、 O ~ ループ終了値 - 1 の数値を順番 に返していきます。ループの 1 度目は O 、 3 度目は 1 、 3 度目は 2 、という具合です。そ れが「 f 〇「」のあとの変数に代入されます。そして「 ange 関数が値を返さなくなるまで処 理を繰り返します。 fo 「カウンタ変数 in range( カウンタ変数 0 , 1 , 2 , 3 ・・・ 順番に代入 ループ内処理 「 ange range の中身が なくなったら終了 ループ外の次の行へ ここで注意するのは「 ange 関数が返す数値は 0 からはじまるということです。はじま りが O なので、最後の数値も「ループ終了値」から 1 引いた数値になります。 Python で はこのような数値の順番は O からはじまるので覚えておきましよう。 それでは実際に f 〇「 in 「 ange を使ってみましよう。新しく「 chap5. py 」というファイ ルを用意し、次のソースコードを入力してみてください。 ( h 叩 - python - Ⅵ 5 リ ( 面 ~ ヘルプ ( H ) ファイル旧編第 ( E ) 選択 ( 5 ) 表示移動向 工クスプローラー chap5. py いているエデイター chap5. py 1 刄◇ ・ PYTHON ( 2P5 ・ 0 「 chap5. py 」を作成