本サイトAIZU ONLINE JUDGE ITP1_10_A へはこちらから
問題:距離
2点 P1(x1, y1), P2(x2, y2) の距離を求めるプログラムを作成せよ。
Input
x1, y1, x2, y2 (実数)が空白区切りで与えられます。
Output
P1とP2の距離を実数で1行に出力して下さい。0.0001以下の誤差があってもよいものとします。
Sample Input
0 0 1 1
Sample Output
1.41421356
解答例
import math
x1, y1, x2, y2 = map(float, input().split())
print(math.hypot(x2 - x1, y2 - y1))
解説
以下のように解いていきます。
4つの整数の読み込み
ここではmap関数を使用します。第二引数のinput().split()で空白区切りの文字列を取得した値を、一つずつint関数に当てはめてint型に変換、x1, y1, x2, y2 に設定していきます。
# input().split()で空白区切りの文字列を取得 → intに変換 → x1, y1, x2, y2 に設定
x1, y1, x2, y2 = map(float, input().split())
※サイト内「AIZU ONLINE JUDGE ITP1_1_Cをpythonで解いてみた」の、map関数とはに使用方法が書かれておりますのでよかったらご覧ください。
P1とP2の距離の表示
まずは、原点からの距離を求めるmath.hypotについて説明します。
math.hypotとは
mathモジュールの一つで、引数に2点を設定することで、原点から点 (x, y)
のベクトルの長さを求める事ができます。
文頭に”import math”と宣言し、数学処理に必要となる機能(mathモジュール)をimportすることで使用することができます。
import math
math.hypot(x,y)
具体的な使い方は以下です。
# mathモジュールをインポート
import math
# 原点から点 (3, 4) のベクトルの長さを戻り値として返す
print(math.hypot(3, 4))
# 出力
5.0
今回は、P1(x1, y1), P2(x2, y2)の距離を求めるため、P2とP1のxとyの距離(x2 – x1, y2 – y1)を設定することで原点から2点の距離(斜辺の長さ)を求める事ができます。
# mathモジュールをインポート
import math
# math.hypotで原点から2点の距離(斜辺の長さ)を求める
print(math.hypot(x2 - x1, y2 - y1))
※サイト内「AIZU ONLINE JUDGE ITP1_4_Bをpythonで解いてみた」の、mathモジュールとはに使用方法が書かれておりますのでよかったらご覧ください。
最後に、もう一度プログラムを確認してみましょう。
# mathモジュールをインポート
import math
# input().split()で空白区切りの文字列を取得 → intに変換 → x1, y1, x2, y2 に設定
x1, y1, x2, y2 = map(float, input().split())
# math.hypotで原点から2点の距離(斜辺の長さ)を求める
print(math.hypot(x2 - x1, y2 - y1))
コメント