質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

1回答

977閲覧

二点間の距離を求めるプログラムの自動化

pandako07

総合スコア12

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2018/11/13 04:00

前提・実現したいこと

引数に変数を連番で入れてプログラムを回したいです。
やりたいことは、
x(n) = 1.0,2.0,...
y(n) = 2.0,2.0,...
として、z,wは固定で自分が入力した点(x(n),y(n))と(z,w)との距離を
求めていくプログラムを作りたいです。

該当のソースコード

python

1import math 2 3def get_distance(x1, y1, z, w): 4 d = math.sqrt((z - x1) ** 2 + (w - y1) ** 2) 5 return d 6 7if __name__ == '__main__': 8 x1 = 1.0 9 y1 = 2.0 10 z, w = 2.0, 3.0 11 d = get_distance(x1, y1, z, w) 12 print(d)

試したこと

x2,x3,x4,x5,x6=2.0,1.0,3.0,1.0,1.0
y2,y3,y4,y5,y6=2.0,4.0,1.0,2.0,3.0
のようにひとつひとつx,yの値を書いて行く方法を試しましたが、
数が100個以上あるので自動化したいです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2018/11/13 04:04

自動化がなにを指すのかよくわからないのですが、点の一覧をリストで書いて、for で回して計算していくやり方では駄目なのでしょうか?
guest

回答1

0

ベストアンサー

x,yの各値をリストで持ち、forループで処理すればよいです。
なお、x,yを同時に走査できるzip関数も利用しています。
参考:forループで便利な zip, enumerate関数

Python

1import math 2def get_distance(x1, y1, z, w): 3 d = math.sqrt((z - x1) ** 2 + (w - y1) ** 2) 4 return d 5 6xn = [1.0,2.0,1.0,3.0,1.0,1.0] 7yn = [2.0,2.0,4.0,1.0,2.0,3.0] 8z,w = 2.0, 3.0 9dn = [] # 結果 10for x,y in zip(xn,yn): 11 dn.append( get_distance(x,y,z,w)) 12print(dn) # [1.4142135623730951, 1.0, 1.4142135623730951, 2.23606797749979, 1.4142135623730951, 1.0] 13exit(0)

投稿2018/11/13 04:07

編集2018/11/13 04:08
can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pandako07

2018/11/13 04:37

ありがとうございます!!できました。
LouiS0616

2018/11/13 07:49

get_distanceの実装には、math.hypotが使えそうな気がします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問