Hallo liebe Forum-Gemeinschaft,
ich bin zurzeit noch Anfänger, was das Programmieren mit Python angeht, ich habe schon ein paar Grundlagen, aber scheitere leider an der folgenden Aufgabe:
Es wurden zwei Listen (x und y) mit Gauss-Krueger Koordinaten für vier Punkte angegeben, und nun soll die folgende Formel zur Berechnung der Gesamtlänge der Linien zwischen diesen Punkten programmiert werden:
L = nΣi=1√((xi - xi-1)^2 + (yi - yi-1)^2)
Kann mir jemand sagen, wie man das in Python schreibt?
Danke und viele Grüße
Summenzeichen und Wurzel in Python
- __blackjack__
- User
- Beiträge: 13102
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@billie7: Es gibt eine `sum()`-Funktion und eine Funktion um im `math`-Modul eine Funktion um die Wurzel zu ziehen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
- __blackjack__
- User
- Beiträge: 13102
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Also ich finde `sqrt()` ”lesbarer”. Wenn man nicht weiss was das macht, kann man das leichter nachlesen als wissen zu müssen das potenzieren mit ½ das gleiche ist wie die Quadratwurzel zu ziehen.
Code: Alles auswählen
#!/usr/bin/env python3
from math import sqrt
from more_itertools import windowed
def main():
...
# n _________________________________________
# --- | 2 2
# \ _ | / \ / \
# L = > \ | | x - x | + | y - y |
# / \| \ n n - 1 / \ n n - 1 /
# ---
# i = 1
L = sum(
sqrt((x_2 - x_1) ** 2 + (y_2 - y_1) ** 2)
for (x_1, y_1), (x_2, y_2) in windowed(zip(xs, ys), 2)
)
if __name__ == "__main__":
main()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Kommt denke ich auf den Kontext an. Wenn man wie hier nur die Quadratwurzel braucht, ist sqrt gut lesbar. Wenn man aber zusätzlich auch andere Wurzeln braucht (zum Beispiel, weil man das geometrische Mittel selbst implementieren möchte), gehts in Python glaube ich auch nur mit Potenzen. Oder man möchte leicht fortgeschritterne Sachen wie Ableitungen oder Stammfunktionen verwenden. Nimmt man Potenzen, geht das alles mit demselben Mechanismus in transparenter Weise.__blackjack__ hat geschrieben: ↑Freitag 15. November 2019, 12:23 Also ich finde `sqrt()` ”lesbarer”.
Vielen Dank für die ausführliche Antwort! Das hilft mir sehr weiter__blackjack__ hat geschrieben: ↑Freitag 15. November 2019, 12:23 Also ich finde `sqrt()` ”lesbarer”. Wenn man nicht weiss was das macht, kann man das leichter nachlesen als wissen zu müssen das potenzieren mit ½ das gleiche ist wie die Quadratwurzel zu ziehen.Code: Alles auswählen
#!/usr/bin/env python3 from math import sqrt from more_itertools import windowed def main(): ... # n _________________________________________ # --- | 2 2 # \ _ | / \ / \ # L = > \ | | x - x | + | y - y | # / \| \ n n - 1 / \ n n - 1 / # --- # i = 1 L = sum( sqrt((x_2 - x_1) ** 2 + (y_2 - y_1) ** 2) for (x_1, y_1), (x_2, y_2) in windowed(zip(xs, ys), 2) ) if __name__ == "__main__": main()