T = [0.0] * 12 R = [0.0] * 12 # リストを宣言する # データを読みこむ print ("Input file?") ifile = input () # ファイル名を入力する f = open (ifile, "r") # ファイルを開く m = 1 while m <= 12: # 同じ処理を12回繰り返す a, b, c = f.readline().split() # データをファイルから読みこむ T[m-1] = float (b) # 気温と降水量の値を R[m-1] = float (c) # リストに代入する m = m + 1 # カウントをひとつ進める f.close () # ファイルを閉じる # 入力データを書き出す print ("Month Temp. Prec.") m = 1 while m <= 12: # 同じ処理を12回繰り返す print (" %4d %5.1f %6.1f" % (m, T[m-1], R[m-1])) # データを書き出す m = m + 1 # カウントをひとつ進める # 年平均気温を計算する s = 0.0 # 合計値にゼロを代入する m = 1 while m <= 12: # 同じ処理を12回繰り返す s = s + T[m-1] # 月平均気温の値を加える m = m + 1 # カウントをひとつ進める Tave = s / 12.0 # 平均値を計算する # 月平均気温の最大値と最小値を求める Tmax = T[1-1] # 変数TmaxとTminに Tmin = T[1-1] # 1月の月平均気温の値を代入する m = 2 while m <= 12: # 2〜12月の月平均気温を調べる if T[m-1] > Tmax: # 月平均気温がTmaxより大きい場合は Tmax = T[m-1] # Tmaxの値を更新する if T[m-1] < Tmin: # 月平均気温がTminより小さい場合は Tmin = T[m-1] # Tminの値を更新する m = m + 1 # カウントをひとつ進める # 年降水量を計算する Rtotal = 0.0 # 合計値にゼロを代入する m = 1 while m <= 12: # 同じ処理を12回繰り返す Rtotal = Rtotal + R[m-1] # 月降水量の値を加える m = m + 1 # カウントをひとつ進める # 乾燥する季節を判定する Rmin = R[1-1] # 変数Rminに MonRmin = 1 # 1月の月降水量の値を代入する m = 2 while m <= 12: # 同じ処理を11回繰り返す if R[m-1] < Rmin: # 月降水量がRminより小さい場合は Rmin = R[m-1] # Rminの値を更新する MonRmin = m m = m + 1 # カウントをひとつ進める if MonRmin >= 4 and MonRmin <= 9: # 最少雨月が夏(4〜9月)の場合 Rmax = R[1-1] # 変数Rmaxに # 1月の月降水量の値を代入する m = 2 while m <= 3: # 2〜3月の月降水量の値を調べる if R[m-1] > Rmax: # 月降水量がRmaxより大きい場合は Rmax = R[m-1] # Rmaxの値を更新する m = m + 1 # カウントをひとつ進める m = 10 while m <= 12: # 10〜12月の月降水量の値を調べる if R[m-1] > Rmax: # 月降水量がRmaxより大きい場合は Rmax = R[m-1] # Rmaxの値を更新する m = m + 1 # カウントをひとつ進める if Rmin <= Rmax / 3.0: dry = "s" else: dry = "f" if MonRmin <= 3 or MonRmin >= 10: # 最少雨月が冬(10〜3月)の場合 Rmax = R[4-1] # 4月の月降水量の値を代入する m = 5 while m <= 9: # 5〜9月の月降水量の値を調べる if R[m-1] > Rmax: Rmax = R[m-1] m = m + 1 # カウントをひとつ進める if Rmin <= Rmax / 10.0: dry = "w" else: dry = "f" # 乾燥限界値を計算する if dry == "s": Rdry = 20.0 * Tave if dry == "w": Rdry = 20.0 * (Tave + 14.0) if dry == "f": Rdry = 20.0 * (Tave + 7.0) # 計算結果を書き出す print ("Tave = %5.1f" % Tave) # 年平均気温 print ("Tmax = %5.1f" % Tmax) # 最暖月平均気温 print ("Tmin = %5.1f" % Tmin) # 最寒月平均気温 print ("Rtotal = %6.1f" % Rtotal) # 年降水量 print ("Rmax = %6.1f" % Rmax) # 雨季最多月降水量 print ("Rmin = %6.1f" % Rmin) # 最少雨月降水量 print ("Mon.(Rmin) = %2d" % MonRmin) # 最少雨月 print ("Dry season = %s" % dry) print ("Rdry = %6.1f" % Rdry) # 乾燥限界値 # 気候区分を判定する if Rtotal >= Rdry: # 年降水量Rtotalが乾燥限界値Rdy以上の場合 if Tmax >= 10.0: # 最暖月平均気温Tmaxが10℃以上の場合 if Tmin >= 18.0: # 最寒月平均気温Tminが18℃以上の場合 if Rmin >= 60.0: Class = "Af" # 熱帯雨林気候 elif Rmin >= 100.0 - 0.04 * Rtotal: Class = "Am" # 熱帯モンスーン気候 else: Class = "Aw" # サバナ気候 elif Tmin >= -3.0: # 最寒月平均気温Tminが-3℃以上18℃未満の場合 if dry == "s" and Rmin < 30.0: Class = "Cs" # 地中海性気候 elif dry == "w": Class = "Cw" # 温暖冬季少雨気候 else: if Tmax >= 22.0: Class = "Cfa" # 温暖湿潤気候 else: Class = "Cfb" # 西岸海洋性気候 else: # 最寒月平均気温Tminが-3℃未満の場合 if dry != "w": Class = "Df" # 亜寒帯湿潤気候 if dry == "w": Class = "Dw" # 亜寒帯冬季少雨気候 else: # 最暖月平均気温Tmaxが10℃未満の場合 if Tmax >= 0.0: Class = "ET" # ツンドラ気候 else: Class = "EF" # 氷雪気候 else: # 年降水量Rtotalが乾燥限界値Rdry未満の場合 if Rtotal >= Rdry / 2.0: Class = "BS" # ステップ気候 else: Class = "BW" # 砂漠気候 print ("Type = %s" % Class) # 結果を書き出す