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 はダミー(意味のない値)で、何でも構いませんが、
# 万が一それが出力されたときにプログラムに誤りがあることが
# わかりやすいように、あえて山名ではありえない値を設定しました。