Browse Source

Programm aufgeräumt, nun mehr kleinere Funktionen

stguegen 5 years ago
parent
commit
67fee87530
1 changed files with 141 additions and 145 deletions
  1. 141 145
      pvl2gunnar.py

+ 141 - 145
pvl2gunnar.py

@@ -1,145 +1,141 @@
-#Entfernungen berechnen
-#Python 2.7
-#Author Gunnar Egenolff
-#letzte Bearbeitung 22.5.19
-
-
-
-import re
-import math as m
-debug = 0
-
-
-
-
-def EINGABE(startoderziel):#Funktion fuer Eingabe
-    
-    eingabe = raw_input(startoderziel)#Eingabeaufforderung
-    eingabealsliste = list(eingabe)#Umwandlung der Eingabe in Liste
-    laenge = len(eingabealsliste)#Laenge der Liste
-    if debug == 1: print "Eingabe als Liste: ", (eingabealsliste)
-    
-    if debug == 1: print "Anzahl der Listenelemente / Laenge der Eingabe: ", (laenge)
-    return eingabealsliste
-
-    
-
-def SUCHBEGRIFF(eingabealsliste, suchbegriffealsliste):#Funktion zur Erstellung der regulaeren Ausdruecke
-    laenge = len(eingabealsliste)#Laenge der Liste
-    i = 0#Zaehlvariable fuer Schleife
-    while i <= laenge - 1: #legt Liste mit regulaeren Ausdruecken an
-        if debug == 1: print "Ersetzter Buchstabe: ", eingabealsliste[i]
-        t = eingabealsliste[:] #Originalliste soll erhalten bleiben, gearbeitet wird mit modifizierter Liste
-        t.insert(i,".?.?") #je ein Buchstabe wird durch 2x Punkt Fragezeichen ersetzt. So koennen an dieser Stelle bis zu 2 beliebige Zeichen vorkommen.
-        del t[i+1]#ersetzter Buchstabe wird geloescht
-        mod = "".join(t)#regulaerer Ausdruck als String
-        suchbegriffealsliste.append("\t" + mod + "\s") #Whitespaces stellen sicher, dass Suchbegriff nicht Teil eines laengeren Namens
-        if debug == 1: print "geaenderte Liste: ", t
-        if debug == 1: print "originale Liste: ", eingabealsliste
-        if debug == 1: print "Liste der Suchbegriffe: ", suchbegriffealsliste
-    
-        i = i + 1
-    return suchbegriffealsliste
-
-
-    
-
-def AUSLESE(x):#Funktion fuer zeilenweises Auslesen der Ortedatei, Abgleich mit Suchbegriff
-
-    
-    j = 0#Zaehlvariable fuer Liste mit regulaeren Ausdruecken
-    k = 1#Nummer fuer Trefferanzeige
-    brt = []#Liste fuer Breitengrade
-    lag = []#Liste fuer Laengengrade
-    ort = []#Liste fuer Ortsnamen
-    schonmalgesehen = []#Liste fuer Treffer, verhindert Mehrfachtreffer
-    while j <= len(x) - 1: #fragt nacheinander alle Versionen des Ortsnamens ab
-        linenr = 0#Startwert und Reset fuer Zaehlvariable fuer Dateizeilen
-        detab = open("DE.tab")#oeffnet Datei
-        Suchbegriff = str(x[j])
-        while True: # liest Datenbank zeilenweise aus
-            line = detab.readline()
-            if not line: break
-            linenr += 1
-            if re.search(Suchbegriff, line) and not linenr in schonmalgesehen: #findet Ortsname, Abgleich mit Trefferliste
-                Liste = line.split("\t")#wandelt Dateizeile in Liste um
-                print k, Liste[7], Liste[3], Liste[4], Liste[5] #Ausgabe Nummer, Plz, Ortsname, Breite, Laenge
-                ort.append(Liste[3])#Trefferlisten
-                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
-        detab.close()
-    vorschlag = [ort, brt, lag]#Zusammenfassung der Trefferlisten fuer return
-    return vorschlag
-    
-    
-
-def AUSWAHL(vorschlag):#Funktion fuer Aufforderung zur Auswahl eines Treffers
-    auswahl = 1000#Startwert fuer Abbruchbedingung
-    while auswahl - 1 > len(vorschlag[1]):#Eingabefehler abfangen
-        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!"
-    Orte = vorschlag[0]#zweistufiges Verfahren zur Isolierung der Werte fuer Ortsname und Koordinaten
-    Ort = Orte[auswahl - 1]#umgeht Syntaxprobleme bei vorschlag[0[auswahl - 1]]
-    Laengengrade = vorschlag[1]
-    Laengengrad = Laengengrade [auswahl - 1]
-    Breitengrade = vorschlag[2]
-    Breitengrad = Breitengrade [auswahl - 1]
-    Koordinaten = []#Zusammenfassung von Ortsname und Koordinaten in Liste fuer return
-    Koordinaten.append(Laengengrad)
-    Koordinaten.append(Breitengrad)
-    Koordinaten.append(Ort)
-    return Koordinaten
-
-
-#Start
-suchbegriffealsliste1 = []
-suchbegriffealsliste2 = []
-treffer1 = []
-treffer2 = []
-while len(treffer1) == 0:#1. Schleife fuer Start, erneute Suche wenn Suche ohne Treffer
-    eingabealsliste1 = EINGABE("Start eingeben: ")#Funktionen GROSS geschrieben
-    suchbegriffealsliste1 = SUCHBEGRIFF(eingabealsliste1, suchbegriffealsliste1)
-    vorschlag1 = AUSLESE(suchbegriffealsliste1)
-    treffer1 = vorschlag1 [0]#Abbruchbedingung fuer Schleife
-    if len(treffer1) == 0:
-        print "Nichts gefunden :("
-Koordinaten1 = AUSWAHL(vorschlag1)
-
-L1 = m.radians(float(Koordinaten1[0]))#Koordinaten in Bogenmass umwandeln
-B1 = m.radians(float(Koordinaten1[1]))
-O1 = Koordinaten1[2]#Ortsname fuer Ausgabe
-
-while len(treffer2) == 0:#2. Schleife fuer Ziel
-    eingabealsliste2 = EINGABE("Ziel eingeben: ")
-    suchbegriffealsliste2 = SUCHBEGRIFF(eingabealsliste2, suchbegriffealsliste2)
-    vorschlag2 = AUSLESE(suchbegriffealsliste2)
-    treffer2 = vorschlag2 [0]
-    if len(treffer2) == 0:
-        print "Nichts gefunden :("
-Koordinaten2 = AUSWAHL(vorschlag2)
-
-
-L2 = m.radians(float(Koordinaten2[0]))
-B2 = m.radians(float(Koordinaten2[1]))
-O2 = Koordinaten2[2]
-
-#Berechnung der Entfernung
-if debug == 1: print "laenge1", L1, K1[0]
-if debug == 1: print "breite1", B1, K1[1]
-if debug == 1: print "laenge2", L2, K2[0]
-if debug == 1: 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 22.5.19
+
+
+
+import re
+import math as m
+debug = 0
+
+
+
+
+def EINGABE(startoderziel):#Funktion fuer Eingabe
+    
+    eingabe = raw_input(startoderziel)#Eingabeaufforderung
+    eingabealsliste = list(eingabe)#Umwandlung der Eingabe in Liste
+    laenge = len(eingabealsliste)#Laenge der Liste
+    if debug == 1: print "Eingabe als Liste: ", (eingabealsliste)
+    
+    if debug == 1: print "Anzahl der Listenelemente / Laenge der Eingabe: ", (laenge)
+    return eingabealsliste
+
+    
+
+def SUCHBEGRIFF(eingabealsliste, suchbegriffealsliste):#Funktion zur Erstellung der regulaeren Ausdruecke
+    laenge = len(eingabealsliste)#Laenge der Liste
+    i = 0#Zaehlvariable fuer Schleife
+    while i <= laenge - 1: #legt Liste mit regulaeren Ausdruecken an
+        if debug == 1: print "Ersetzter Buchstabe: ", eingabealsliste[i]
+        t = eingabealsliste[:] #Originalliste soll erhalten bleiben, gearbeitet wird mit modifizierter Liste
+        t.insert(i,".?.?") #je ein Buchstabe wird durch 2x Punkt Fragezeichen ersetzt. So koennen an dieser Stelle bis zu 2 beliebige Zeichen vorkommen.
+        del t[i+1]#ersetzter Buchstabe wird geloescht
+        mod = "".join(t)#regulaerer Ausdruck als String
+        suchbegriffealsliste.append("\t" + mod + "\s") #Whitespaces stellen sicher, dass Suchbegriff nicht Teil eines laengeren Namens
+        if debug == 1: print "geaenderte Liste: ", t
+        if debug == 1: print "originale Liste: ", eingabealsliste
+        if debug == 1: print "Liste der Suchbegriffe: ", suchbegriffealsliste
+    
+        i = i + 1
+    return suchbegriffealsliste
+
+
+    
+
+def AUSLESE(x):#Funktion fuer zeilenweises Auslesen der Ortedatei, Abgleich mit Suchbegriff
+
+    
+    j = 0#Zaehlvariable fuer Liste mit regulaeren Ausdruecken
+    k = 1#Nummer fuer Trefferanzeige
+    brt = []#Liste fuer Breitengrade
+    lag = []#Liste fuer Laengengrade
+    ort = []#Liste fuer Ortsnamen
+    schonmalgesehen = []#Liste fuer Treffer, verhindert Mehrfachtreffer
+    while j <= len(x) - 1: #fragt nacheinander alle Versionen des Ortsnamens ab
+        linenr = 0#Startwert und Reset fuer Zaehlvariable fuer Dateizeilen
+        detab = open("DE.tab")#oeffnet Datei
+        Suchbegriff = str(x[j])
+        while True: # liest Datenbank zeilenweise aus
+            line = detab.readline()
+            if not line: break
+            linenr += 1
+            if re.search(Suchbegriff, line) and not linenr in schonmalgesehen: #findet Ortsname, Abgleich mit Trefferliste
+                Liste = line.split("\t")#wandelt Dateizeile in Liste um
+                print k, Liste[7], Liste[3], Liste[4], Liste[5] #Ausgabe Nummer, Plz, Ortsname, Breite, Laenge
+                ort.append(Liste[3])#Trefferlisten
+                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
+        detab.close()
+    vorschlag = [ort, brt, lag]#Zusammenfassung der Trefferlisten fuer return
+    return vorschlag
+    
+    
+
+def AUSWAHL(vorschlag):#Funktion fuer Aufforderung zur Auswahl eines Treffers
+    auswahl = 1000#Startwert fuer Abbruchbedingung
+    while auswahl - 1 > len(vorschlag[1]):#Eingabefehler abfangen
+        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!"
+    Orte = vorschlag[0]#zweistufiges Verfahren zur Isolierung der Werte fuer Ortsname und Koordinaten
+    Ort = Orte[auswahl - 1]#umgeht Syntaxprobleme bei vorschlag[0[auswahl - 1]]
+    Laengengrade = vorschlag[1]
+    Laengengrad = Laengengrade [auswahl - 1]
+    Breitengrade = vorschlag[2]
+    Breitengrad = Breitengrade [auswahl - 1]
+    Koordinaten = []#Zusammenfassung von Ortsname und Koordinaten in Liste fuer return
+    Koordinaten.append(Laengengrad)
+    Koordinaten.append(Breitengrad)
+    Koordinaten.append(Ort)
+    return Koordinaten
+
+
+#Start
+suchbegriffealsliste1 = []
+suchbegriffealsliste2 = []
+treffer1 = []
+treffer2 = []
+while len(treffer1) == 0:#1. Schleife fuer Start, erneute Suche wenn Suche ohne Treffer
+    eingabealsliste1 = EINGABE("Start eingeben: ")#Funktionen GROSS geschrieben
+    suchbegriffealsliste1 = SUCHBEGRIFF(eingabealsliste1, suchbegriffealsliste1)
+    vorschlag1 = AUSLESE(suchbegriffealsliste1)
+    treffer1 = vorschlag1 [0]#Abbruchbedingung fuer Schleife
+    if len(treffer1) == 0:
+        print "Nichts gefunden :("
+Koordinaten1 = AUSWAHL(vorschlag1)
+
+L1 = m.radians(float(Koordinaten1[0]))#Koordinaten in Bogenmass umwandeln
+B1 = m.radians(float(Koordinaten1[1]))
+O1 = Koordinaten1[2]#Ortsname fuer Ausgabe
+
+while len(treffer2) == 0:#2. Schleife fuer Ziel
+    eingabealsliste2 = EINGABE("Ziel eingeben: ")
+    suchbegriffealsliste2 = SUCHBEGRIFF(eingabealsliste2, suchbegriffealsliste2)
+    vorschlag2 = AUSLESE(suchbegriffealsliste2)
+    treffer2 = vorschlag2 [0]
+    if len(treffer2) == 0:
+        print "Nichts gefunden :("
+Koordinaten2 = AUSWAHL(vorschlag2)
+
+
+L2 = m.radians(float(Koordinaten2[0]))
+B2 = m.radians(float(Koordinaten2[1]))
+O2 = Koordinaten2[2]
+
+#Berechnung der Entfernung
+
+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."