# That's the programm file of Michelle Piras, Malte Staerker and Alexander Teubert for PVL Programmierung@hs-anhalt 2017 # Please don't copy any of this! # Thank you! # Created: 19:31 01.06.2017 [/AT] # Last edit: 22:14 07.06.2017 [/AT] import sys import math import os import re import time as t os.system("clear") #FUNKTIONEN: def begruessung(): print "{1}{0}{2}{0}{3}{0}{4}".format("\n ","Hallo und herzlich willkommen zum Luftlinienberechner fuer Deutschland!","1) Starte das Programm","2) Rufe die Hilfe auf!","3) Schliesse das Programm!") def Auswahl(): try: global option option = int(raw_input("Bitte treffen Sie eine Auswahl! ")) except ValueError: print "Ungueltige Eingabe!" t.sleep(3) def hilfe(): hilfetxt = open("readme.txt","r") # ruft readme.txt auf und liest sie aus txt = hilfetxt.read() print txt hilfetxt.close() def abfrage(): ergebnisse = [] #alle vorschlaege landen in dieser liste share = [] #Matrix aller Treffer while True: AV = 0 #Anzahl der Vorschlaege Daten = open("/data/share/sstudent/py_pgm1/DE.tab","r").readlines() #Dokument wird in Programm ueberfuehrt eingabe = str(raw_input("Name der Ausgangsstadt?")) for line in Daten: #Zeilen werden nach uebereinstimmung untersucht if re.search(r"%s"%eingabe,line,re.IGNORECASE): ergebnisse.append(Daten[AV]) #aktuelle zeile wird bei treffer in ergebnisse ueberfuehrt AV = AV + 1 if len(ergebnisse) != 0: break else: print "Zu diesem Ort haben wir keine Daten. Tut uns leid!" for AV in range(len(ergebnisse)): #Ausgabe einer list an Vorschlaegen, die spaeter nach hinzugefuegter Nummerierung angesteuert werden koennen print "%i. Vorschlag:%s"%(AV+1,ergebnisse[AV]) bed = False while bed==False: stadt1 = raw_input("Bitte waehlen Sie aus der Liste eine Option!") try: int(stadt1) bed = True if int(stadt1) > AV+1: print "{0} ist keine Option!".format(int(stadt1)) bed = False except ValueError: print "Ungueltige Eingabe!" s1 = int(stadt1)-1 share.append(ergebnisse[s1].split("\t")) #Ausgabevariablen/Daten: global latitude global longitude global name global plz latitude = share [0] [4] #aus share-matrix werden gewuenschte werte ausgelesen latitude = float(latitude) longitude = share [0] [5] longitude = float(longitude) name = share [0] [3] plz = share [0] [7] def berechnung(a,b,c,d): a = math.radians(a) b = math.radians(b) c = math.radians(c) d = math.radians(d) r = 6371 part1 = (math.sin((a-b)/2))**2 part2 = (math.cos(a))*(math.cos(b))*(math.sin((c-d)/2))**2 distance = 2 * r * math.asin(math.sqrt(part1+part2)) O1 = list1[2] O2 = list2[2] P1 = list1[3] P2 = list2[3] print "{0}({1}) liegt ca. {4} Kilometer entfernt von {2}({3}).".format(O1,P1,O2,P2,distance) #MENU: while True: list1 = [] list2 = [] begruessung() Auswahl() if option == 1: abfrage() list1 = [latitude,longitude,name,plz] abfrage() list2 = [latitude,longitude,name,plz] berechnung(list1[0],list2[0],list1[1],list2[1]) print "Ich starte das Programm!" elif option == 2: hilfe() elif option == 3: print "Auf Wiedersehen!" break #BERECHNUNG