![見出し画像](https://assets.st-note.com/production/uploads/images/10180825/rectangle_large_type_2_fd026f69adf9e498330249a8c1532583.jpeg?width=1200)
Photo by
volmoto
[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
出来杉...
この記事が気に入ったらサポートをしてみませんか?