Browse Source

Entfernungsberechnung funktioniert nun. Fehleingabe bei Auswahl abgefangen. Option für vergebliche Suche fehlt noch.

stguegen 5 years ago
parent
commit
9e09e12da5
1 changed files with 108 additions and 108 deletions
  1. 108 108
      pvl2gunnar.py

+ 108 - 108
pvl2gunnar.py

@@ -1,108 +1,108 @@
-#Entfernungen berechnen
-#Python 2.7
-#Author Gunnar Egenolff
-#letzte Bearbeitung 16.5.19
-import re
-import math as m
-debug = 0
-#2x fuer Start und Ziel
-
-    #Eingabe Ort
-x1 = []
-x2 = []
-
-def EINGABE(SZ, x):
-    
-    eingabe = raw_input(SZ)
-    s = list(eingabe)
-    
-    if debug == 1: print "Eingabe als Liste: ", (s)
-    laenge = len(s)
-    if debug == 1: print "Anzahl der Listenelemente / Laenge der Eingabe: ", (laenge)
-
-    #Umwandlung Ortsname in Suchbegriff mit Toleranz
-
-    
-    i = 0
-    while i <= laenge - 1: #legt Liste mit regulaeren Ausdruecken an
-        if debug == 1: print "Position des ersetzten Buchstaben: ", s[i]
-        t = s[:] #Originalliste soll erhalten bleiben, gearbeitet wird mit modifizierter Liste
-        t.insert(i,".?.?") #je ein Buchstabe wird durch Punkt ersetzt
-        del t[i+1]
-        mod = "".join(t)
-        x.append("\t" + mod + "\s") #stellt sicher, dass Name nicht Teil eines laengeren Namens
-        if debug == 1: print "geaenderte Liste: ", t
-        if debug == 1: print "originale Liste: ", s
-        if debug == 1: print "Liste der Suchbegriffe: ", x
-    
-        i = i + 1
-   
-    #zeilenweises Auslesen der Ortedatei, Abgleich mit Suchbegriff
-
-    linenr = 0
-    j = 0
-    k = 1
-    brt = []
-    lag = []
-    ort = []
-    schonmalgesehen = []
-    while j <= len(x) - 1: #fragt nacheinander alle Versionen des Ortsnamens ab
-        linenr = 0
-        input = open("DE.tab")
-        Suchbegriff = str(x[j])
-        while True: # liest Datenbank zeilenweise aus
-            line = input.readline()
-            if not line: break
-            linenr += 1
-            if re.search(Suchbegriff, line) and not linenr in schonmalgesehen: #findet Ortsname
-                Liste = line.split("\t")
-                print k, Liste[7], Liste[3], Liste[4], Liste[5] #Ausgabe Plz, Ortsname, Breite, Laenge
-                ort.append(Liste[3])
-                brt.append(Liste[4])
-                lag.append(Liste[5])
-                k += 1
-                schonmalgesehen.append(linenr)
-                if debug == 2: print schonmalgesehen
-                if debug == 2: print lon, lat
-        if debug == 1: print "Suchbegriff: ", str(x[j])
-        j+=1
-        line = True
-
-    #Aufforderung zur Auswahl
-    auswahl = 1000
-    while auswahl - 1 > len(lag):
-        while True:
-            try:  
-                auswahl = raw_input("Bitte geben Sie die Nummer des gewuenschten Orts ein: ")
-                auswahl = int(auswahl)
-                break
-            except ValueError:
-                print "Bitte natuerliche Zahl eingeben!"
-    Ort = ort [auswahl - 1]
-    Laengengrad = lag [auswahl - 1]
-    Breitengrad = brt [auswahl - 1]
-    Koordinaten = []
-    Koordinaten.append(Laengengrad)
-    Koordinaten.append(Breitengrad)
-    Koordinaten.append(Ort)
-    return Koordinaten
-  
-K1 = EINGABE("Start eingeben: ", x1)
-
-L1 = m.radians(float(K1[0]))
-B1 = m.radians(float(K1[1]))
-O1 = K1[2]
-#print lon1
-K2 = EINGABE("Ziel eingeben: ", x2)
-L2 = m.radians(float(K2[0]))
-B2 = m.radians(float(K2[1]))
-O2 = K2[2]
-
-#Berechnung der Entfernung
-if debug == 3: print "laenge1", L1, K1[0]
-if debug == 3: print "breite1", B1, K1[1]
-if debug == 3: print "laenge2", L2, K2[0]
-if debug == 3: print "breite2", B2, K2[1]
-
-distanz = 6371.0 * m.acos( m.cos(B1) * m.cos(B2) * m.cos(L2 - L1) + m.sin(B1) * m.sin(B2) )
-print "Die Entfernung zwischen", O1,"und", O2,"betraegt: ", distanz, "km."
+#Entfernungen berechnen
+#Python 2.7
+#Author Gunnar Egenolff
+#letzte Bearbeitung 21.5.19
+import re
+import math as m
+debug = 0
+#2x fuer Start und Ziel
+
+    #Eingabe Ort
+x1 = []
+x2 = []
+
+def EINGABE(SZ, x):
+    
+    eingabe = raw_input(SZ)
+    s = list(eingabe)
+    
+    if debug == 1: print "Eingabe als Liste: ", (s)
+    laenge = len(s)
+    if debug == 1: print "Anzahl der Listenelemente / Laenge der Eingabe: ", (laenge)
+
+    #Umwandlung Ortsname in Suchbegriff mit Toleranz
+
+    
+    i = 0
+    while i <= laenge - 1: #legt Liste mit regulaeren Ausdruecken an
+        if debug == 1: print "Position des ersetzten Buchstaben: ", s[i]
+        t = s[:] #Originalliste soll erhalten bleiben, gearbeitet wird mit modifizierter Liste
+        t.insert(i,".?.?") #je ein Buchstabe wird durch Punkt ersetzt
+        del t[i+1]
+        mod = "".join(t)
+        x.append("\t" + mod + "\s") #stellt sicher, dass Name nicht Teil eines laengeren Namens
+        if debug == 1: print "geaenderte Liste: ", t
+        if debug == 1: print "originale Liste: ", s
+        if debug == 1: print "Liste der Suchbegriffe: ", x
+    
+        i = i + 1
+   
+    #zeilenweises Auslesen der Ortedatei, Abgleich mit Suchbegriff
+
+    linenr = 0
+    j = 0
+    k = 1
+    brt = []
+    lag = []
+    ort = []
+    schonmalgesehen = []
+    while j <= len(x) - 1: #fragt nacheinander alle Versionen des Ortsnamens ab
+        linenr = 0
+        input = open("DE.tab")
+        Suchbegriff = str(x[j])
+        while True: # liest Datenbank zeilenweise aus
+            line = input.readline()
+            if not line: break
+            linenr += 1
+            if re.search(Suchbegriff, line) and not linenr in schonmalgesehen: #findet Ortsname
+                Liste = line.split("\t")
+                print k, Liste[7], Liste[3], Liste[4], Liste[5] #Ausgabe Plz, Ortsname, Breite, Laenge
+                ort.append(Liste[3])
+                brt.append(Liste[4])
+                lag.append(Liste[5])
+                k += 1
+                schonmalgesehen.append(linenr)
+                if debug == 2: print schonmalgesehen
+                if debug == 2: print lon, lat
+        if debug == 1: print "Suchbegriff: ", str(x[j])
+        j+=1
+        line = True
+
+    #Aufforderung zur Auswahl
+    auswahl = 1000
+    while auswahl - 1 > len(lag):
+        while True:
+            try:  
+                auswahl = raw_input("Bitte geben Sie die Nummer des gewuenschten Orts ein: ")
+                auswahl = int(auswahl)
+                break
+            except ValueError:
+                print "Bitte natuerliche Zahl eingeben!"
+    Ort = ort [auswahl - 1]
+    Laengengrad = lag [auswahl - 1]
+    Breitengrad = brt [auswahl - 1]
+    Koordinaten = []
+    Koordinaten.append(Laengengrad)
+    Koordinaten.append(Breitengrad)
+    Koordinaten.append(Ort)
+    return Koordinaten
+  
+K1 = EINGABE("Start eingeben: ", x1)
+
+L1 = m.radians(float(K1[0]))
+B1 = m.radians(float(K1[1]))
+O1 = K1[2]
+#print lon1
+K2 = EINGABE("Ziel eingeben: ", x2)
+L2 = m.radians(float(K2[0]))
+B2 = m.radians(float(K2[1]))
+O2 = K2[2]
+
+#Berechnung der Entfernung
+if debug == 3: print "laenge1", L1, K1[0]
+if debug == 3: print "breite1", B1, K1[1]
+if debug == 3: print "laenge2", L2, K2[0]
+if debug == 3: print "breite2", B2, K2[1]
+
+distanz = 6371.0 * m.acos( m.cos(B1) * m.cos(B2) * m.cos(L2 - L1) + m.sin(B1) * m.sin(B2) )
+print "Die Entfernung zwischen", O1,"und", O2,"betraegt: ", distanz, "km."