見出し画像

[Python]友達の家までの距離をランキング表示

1.距離算出

自分の家から友達の家までの距離をプログラムで求めます。中学の時に習った三平方の定理を使います。ここでは、2次元の平面上にいるとして友達の家の座標から自分の家の各x,y座標を引いて2乗した和の平方根を取り、求めます。また、複数人の友達の家までの距離を求め、近い順にランキングで表示したいと思います。

2.コード

各座標はタプルで表現しています。

from math import sqrt
#現在地の座標
CURRENT_LOCATION = (30, 50)
#友達の家までの座標
FRIREND_LOCATION = {
                    (10, 20): "しずか",
                    (-30, -50): "ジャイアン",
                    (100, 10): "スネ夫",
                    (45, 45): "出来杉"
                    }
#現在地から友達の家までの距離
firend_distance = []

for fri_loc in FRIREND_LOCATION:
    #対象の家から現在地までの各座標の差の2乗
    dis = (fri_loc[0] - CURRENT_LOCATION[0]) ** 2  + (fri_loc[1] - CURRENT_LOCATION[1]) ** 2 
    #平方根を取る
    sqrt_dis = sqrt(dis)
    #名前と距離のタプルを作成
    who_dis = (FRIREND_LOCATION[fri_loc], sqrt_dis)
    #距離のリストにタプルを追加
    firend_distance.append(who_dis)

#距離をキーにリスト内を昇順にソート
sorted_distance = sorted(firend_distance, key=lambda dis: dis[1])
print("--家近い人ランキング--")
for k, v in enumerate(sorted_distance):
    name = v[0]
    #小数第一位まで表示
    distance = round(v[1], 1)
    #整形する為に出し分け
    if name != "ジャイアン":
         print("{0}位:{1:<8}|距離:{2}".format(k + 1, name, distance))
    else:
        print("{0}位:{1:<6}|距離:{2}".format(k + 1, name, distance))

3.実行結果

--家近い人ランキング--
1:出来杉     |距離:15.8
2位:しずか     |距離:36.1
3:スネ夫     |距離:80.6
4位:ジャイアン   |距離:116.6

出来杉...


この記事が気に入ったらサポートをしてみませんか?