소스 검색

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

stguegen 5 년 전
부모
커밋
a9a421c3fa
1개의 변경된 파일38개의 추가작업 그리고 24개의 파일을 삭제
  1. 38 24
      pvl2gunnar.py

+ 38 - 24
pvl2gunnar.py

@@ -6,20 +6,16 @@ import re
 import math as m
 debug = 0
 #2x fuer Start und Ziel
-lon = []
-lat = []
+
     #Eingabe Ort
 x1 = []
 x2 = []
 
 def EINGABE(SZ, x):
-    lon1 = 0.0
-    lon2 = 0.0
-    lat1 = 0.0
-    lat2 = 0.0
+    
     eingabe = raw_input(SZ)
     s = list(eingabe)
-    print s
+    
     if debug == 1: print "Eingabe als Liste: ", (s)
     laenge = len(s)
     if debug == 1: print "Anzahl der Listenelemente / Laenge der Eingabe: ", (laenge)
@@ -46,6 +42,9 @@ def EINGABE(SZ, x):
     linenr = 0
     j = 0
     k = 1
+    brt = []
+    lag = []
+    ort = []
     schonmalgesehen = []
     while j <= len(x) - 1: #fragt nacheinander alle Versionen des Ortsnamens ab
         linenr = 0
@@ -57,9 +56,10 @@ def EINGABE(SZ, x):
             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, lon, lat
-                lon.append(Liste[4])
-                lat.append(Liste[5])
+                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
@@ -69,26 +69,40 @@ def EINGABE(SZ, x):
         line = True
 
     #Aufforderung zur Auswahl
-    auswahl = raw_input("Bitte geben Sie die Nummer des gewuenschten Orts ein: ")
-    auswahl = int(auswahl)
-    print lon [auswahl - 1]
-    Laengengrad = lon [auswahl - 1]
-    Breitengrad = lat [auswahl - 1]
+    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)
-print K1
-L1 = float(K1[0])
-B1 = float(K1[1])
+
+L1 = m.radians(float(K1[0]))
+B1 = m.radians(float(K1[1]))
+O1 = K1[2]
 #print lon1
 K2 = EINGABE("Ziel eingeben: ", x2)
-L2 = float(K2[0])
-B2 = float(K2[1])
+L2 = m.radians(float(K2[0]))
+B2 = m.radians(float(K2[1]))
+O2 = K2[2]
+
 #Berechnung der Entfernung
-print L1
-print L2
+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(L1 - L2) + m.sin(L1) * m.sin(L2) )
-print distanz
+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."