answer9_2_2.py
mountains = dict()
while True:
s = input("山名と高さ?")
if s == "":
break
mountain, height_s = s.split()
height = int(height_s)
mountains[mountain] = height
# highestはここまででもっとも高い山の情報。形式は(山名, 標高)。
highest = (None, 0) # Noneはダミー
for mt, ht in mountains.items():
print(f"{mt}:{ht}メートル")
if ht > highest[1]:
highest = (mt, ht)
print(f"最高峰は{highest[0]}、高さは{highest[1]}メートルです!")
# 章末問題 9章【2】(2)解答例
#
# 最高峰を求めるコードでは(11行目〜)、これまで現れた山の中で
# 一番高いものを (山名, 高さ) というタプルとして変数highestに保持し、
# それよりも高い山が現れたら(14行目の条件式)、それを新たに
# highestに設定します(15行目)。
#
# 山の高さは0メートルより高いと仮定して、
# highestの初期値として11行目でタプル (None, 0) を代入しています。
# これにより最初の山が必ず一旦highestに設定されます。
# None はダミー(意味のない値)で、何でも構いませんが、
# 万が一それが出力されたときにプログラムに誤りがあることが
# わかりやすいように、あえて山名ではありえない値を設定しました。