トップ > 6章「Pythonを活用しよう(3)」 > 7.繰り返し(2)

7.繰り返し(2)

6章「Pythonを活用しよう(3)」-高校生から始める"Python(パイソン)"で行うデータ処理-

もう少し、繰り返しのところについて考えよう。
今までは、失敗してもただ繰り返すだけだったけど、これはイマイチだよね。だから、5回失敗したらプログラムを終了するようにしよう。

なるほど。その方が、いいですね。

 作業 「5回で繰り返しを終了させよう」  

1.for.pyというファイルを作り、以前のファイルでコピーできるものはコピーして、以下のものをコーディングする。
2.コーディング後、New > Python3 でforというファイルを作り、実行する。

import matplotlib.pyplot as plt
import sys

year = [1950, 1980, 2000, 2015, 2016]
country = {'japan': [82, 116, 126, 127, 126], 'usa': [158, 230, 283, 322, 324], 'korea': [19, 37, 46, 50, 51]}

# タイトル挿入
print('【日本、アメリカ、韓国どれか2国の人口推移を比較】¥n')

for i in range(5):
    print('japanかusaかkoreaのどれかを入力してください。¥n')
    country1 = input()

    if country1 == 'japan' or country1 == 'usa' or country1 == 'korea':
        break

    elif i == 4:
        print('¥n5回失敗しました。プログラムを終了します。¥n')
        sys.exit()

    else:
        continue

while True:
    print('japanかusaかkoreaのどれかを入力してください。¥n')
    country2 = input()

    if country1 == country2:
        print('country1と同じ値が入れられました。')
        continue

    elif country2 == 'japan' or country2 == 'usa' or country2 == 'korea':
        print('¥n' + country1 + 'と' + country2 + 'の比較グラフを表示します。')
        break

    else:
        continue

# 2国間の人口推移比較関数
def compare_2countries():
    plt.plot(year, country[country1], color='#FF0000', label=country1)
    plt.plot(year, country[country2], color='#00FF00', label=country2)
    plt.legend()
    plt.show()

compare_2countries()

 解説 「5回で繰り返しを終了させよう」  

for i in range(5)というのは「5回繰り返す」という意味である。
range(5)というのは「0から5つの数字を作る」というもので「0, 1, 2, 3, 4 の数字を作る」ということである。
i in range(*)というのは「iという変数に0から順番に数字を*個入れていく」という意味である。
つまり、最初はi = 0 となり、繰り返しを行う。i = 0の時に条件に合わなければ、i = 1 として、繰り返しを行う。というようにi = 4 になるまで繰り返し続ける。つまり、5回繰り返すことになる。
elif i == 4 というのは「iが4のとき」という意味で、5回繰り返した際に処理を行う、つまりプログラムを終了させるのである。
for i in range(*) という書き方は、よく使うので、しっかりと覚えておくと様々な場面で使えるだろう。

そうすると…。

そうすると、2回目のwhile文も直してみようね。

そうですよねー^^;

 作業 【練習問題:for文を作成してみよう】  

上記のを参考にして、2回目のwhile文をfor文に書き換えよう。処理としては上記と同じく「5回間違ったら、プログラムを終了する」というものにする。

 解説 【解答例】  

for i in range(5):
    print('japanかusaかkoreaのどれかを入力してください。¥n')
    country2 = input()

    if country1 != country2 and (country2 == 'japan' or country2 == 'usa' or country2 == 'korea'):
        print('¥n' + country1 + 'と' + country2 + 'の比較グラフを表示します。')
        break

    elif i == 4:
        print('¥n5回失敗しました。プログラムを終了します。¥n')
        sys.exit()

    elif country1 == country2:
        print('country1と同じ値が入れられました。')
        continue

    else:
        continue
2回目のif文の意味は「country1とcountry2が違う かつ coutry1がjapanかusaかkorea のとき」という意味である。


i == 4 の部分をどこに入れるかが、大切だね。上のifに入れると、5回目の成功がカウントされないし、下のelifのところに入れると、ミスが6回にカウントされてしまうので、どのような流れになっているか、しっかり確認しながら作れるといいね。

<--前へ | トップへ | 次へ-->
-高校生から始める"Python(パイソン)"で行うデータ処理-