2016-04-15 24 views
1

Ich versuche, eine Aufgabe mit Python abzuschließen. Ziel ist es, Wörterbücher zu verwenden, um eine .txt-Datei zu analysieren und die Zeit und die Temp zu isolieren. Um sie in ein Wörterbuch zu stellen und dann die höchste Temperatur und ihre entsprechende Zeit zu finden.Programmierung Python: Verwenden von Wörterbüchern, um Daten zu isolieren

Ich habe die Zuordnung abgeschlossen, aber ich kann nicht herausfinden, wie es NUR die höchste drucken kann. Stattdessen drucke ich die ersten drei.

pycharm output

fname = raw_input("Enter the file name: ") 

try: 
    fhand = open(fname) 
except: 
    print "The file can not be opened." 
    exit() 

climate = dict()  #creates dictionary 

count = 0 
largest = None # Iteration variable to find highest temp 

high = 0 
for line in fhand: 
    count += 1    #count variable to get rid of line 1 
    if count == 1:  #may be causing it to iterate 3x???? 
     continue 

    words = line.split()   # splits into tokens 
    time = words[0] + words[1]  # combines time and am/pm 
    climate[time] = words[2]  # matches time to temp making key-value pair 

for key in climate: 
     if climate[key] > largest: # Iterates through key-value's finding largest and placing it in largest container 
      largest = climate[key] 

      print 'The highest temperatures occurred at', key, 'reaching', largest, 'Fahrenheit.' 

fhand.close() 
+1

definieren 'key' vor der Schleife, so dass es in ihrem Umfang außerhalb der Schleife ist, und nicht gedruckt werden innerhalb der Schleife, Drucken, nachdem die 'for'-Schleife endet. – sberry

+0

Willkommen bei SO. Ich habe die Struktur der Frage bearbeitet, um sie etwas klarer zu machen. Ich empfehle, anstatt eine Bildverknüpfung an Ihre IDE-Ausgabe zu senden, die Frage zu bearbeiten, um die Ausgabe als Text in der Frage anzuzeigen. Auch @sberry Vorschlag ist auf Punkt. – paisanco

Antwort

0

Dies tun sollten, was Sie wollen:

high_key = None 
largest = 0 
for key in climate: 
     if climate[key] > largest: # Iterates through key-value's finding largest and placing it in largest container 
      largest = climate[key] 
      high_key = key 

if high_key: 
    print 'The highest temperatures occurred at', high_key, 'reaching', largest, 'Fahrenheit.' 
+0

Vielen Dank. Das nervte mich höllisch. also meine Variablen "high" und "large" benötigt, um Werte zu wechseln, können Sie mir den Unterschied zwischen Null und None sagen? Den Rest verstehe ich was passiert ist. –

+0

Die Einstellung auf "0" setzt voraus, dass die Temperaturen positiv sind, so dass einige Temperaturen den Anfangswert überschreiben. Ich denke, keiner würde besser funktionieren, da er negative Werte verarbeiten würde. Persönlich würde ich es vorziehen, 'larest = float ('- inf')' zu initialisieren, weil ich denke, dass dies die Absicht klarer macht. – Philip

+0

Ahh okay, das macht Sinn. Vielen Dank. Ich werde weiter damit spielen. –

Verwandte Themen