なるほど。その方が、いいですね。
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()
そうすると…。
そうすると、2回目のwhile文も直してみようね。
そうですよねー^^;
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: continue2回目のif文の意味は「country1とcountry2が違う かつ coutry1がjapanかusaかkorea のとき」という意味である。
i == 4 の部分をどこに入れるかが、大切だね。上のifに入れると、5回目の成功がカウントされないし、下のelifのところに入れると、ミスが6回にカウントされてしまうので、どのような流れになっているか、しっかり確認しながら作れるといいね。
もう少し、繰り返しのところについて考えよう。
今までは、失敗してもただ繰り返すだけだったけど、これはイマイチだよね。だから、5回失敗したらプログラムを終了するようにしよう。