Kubikwurzel und ^3 in Python?

5 Antworten

#!/usr/bin/python

import sys
from math import sqrt

print "Punkt1 x y z"
x0 = float(raw_input())
y0 = float(raw_input())
z0 = float(raw_input())
print "Punkt2 x y z"
x1 = float(raw_input())
y1 = float(raw_input())
z1 = float(raw_input())
#prfloat "[", x0, y0, z0, "] ", " [",x1, y1,z1, "]"

a = [x0, y0, z0]
b = [x1, y1, z1]

abstand = sqrt((b[0]-a[0])*(b[0]-a[0])+(b[1]-a[1])*(b[1]-a[1])+(b[2]-a[2])*(b[2]-a[2]))

print "abstand", abstand

sys.exit()
Woher ich das weiß:Berufserfahrung – Studium der Informatik + Softwareentwickler seit 25 Jahren.
a=[...]
b=[...]
math.sqrt(functools.reduce(lambda u,v: u+v , itertools.starmap(lambda x,y : (x-y)**2,zip(a,b))))

a und b können Vektoren beliebiger Dimension sein.

Alternativ könnte man es auch so implementieren:

d=0
for x,y in zip(a,b):
  d+=(x-y)**2
d=math.sqrt(d)

In Python gibt es den power-Operator:

result = 2**3
print(result)  # 8
Beantworter375  03.10.2019, 21:56

Wieso hat java sowas nicht

0
regex9  03.10.2019, 22:43
@Beantworter375

Python wurde ja als einfache Skriptsprache entwickelt und fand schnell Einzug in der Anwendung wissenschaftlicher Bereiche. Zumindest die erste Zielsetzung dürfte Grund für die Einarbeitung dieses Operators gewesen sein. In Java bestand kein Fokus auf solche expliziten Verkürzungen.

0
regex9  03.10.2019, 22:46

Nachtrag: Die n-te Wurzel lässt sich ebenso durch Potenzieren ermitteln.

Formel:

result = number ^ (1 / n)
1
Isendrak  03.10.2019, 23:33
@regex9

Achtung: Das Zeichen ^ ist in Python der Operator für Bitweises-XOR. (Nicht dass hier noch Missverständnisse auftreten. ^^)

0
regex9  03.10.2019, 23:39
@Isendrak

Exakt. Das da oben ist nur die mathematische Formel. In Kommentaren kann man die leider nicht so schön formatieren, wie bei Antworten.

1
Isendrak  03.10.2019, 23:45
@regex9

Gibt ja immer noch Unicode: result = number¹ᐟⁿ ;)

1

Kenn mich nicht in Python aus aber mach doch einfach x*x*x. Ansonsten erweiterten pythagoras zur abstandsberechnung