Ich schrieb ein Programm, um diese Frage zu beantworten. Es besagt, dass mein Programm keine Ausgabe hat.Warum hat mein Programm keine Ausgabe?
Frage: Schreiben Sie ein Programm, um die mbox-short.txt zu lesen und die Verteilung nach Stunde des Tages für jede der Nachrichten herauszufinden. Sie können die Stunde aus der 'Von'-Zeile herausziehen, indem Sie die Zeit finden und dann die Zeichenfolge ein zweites Mal mit einem Doppelpunkt aufteilen.
From [email protected] Sat Jan 5 09:14:16 2008
Sobald Sie die Zählungen für jede Stunde angesammelt haben, drucken Sie die Zählwerte, sortiert nach Stunden, wie unten gezeigt.
gewünschte Ausgabe:
04 3
06 1
07 1
09 2
10 3
11 6
14 1
15 2
16 4
17 2
18 1
19 1
Mein Code:
name = raw_input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)
counts = dict()
for line in handle:
if not line.startswith('From'):
continue
words = line.split()
time = words[5]
timesplit = time.split(':')
hour = timesplit[0]
for x in hour:
counts[x] = counts.get(x, 0) + 1
lists = list()
for key, val in counts.items():
lists.append((key, val))
lists.sort(reverse=True)
for val, key in lists:
print key, val
Sind Sie sicher, dass Ihr Code korrekt in diese Seite eingefügt wurde? dann wird der Code nach 'words = line.splite()' nie ausgeführt, da er den gleichen Einzug mit 'continue' hat. – ymonad
Zuerst muss ich prüfen, ob eine Zeile mit 'Von' beginnt. Wenn nicht, macht der continue den Code immer wieder neu, bis er eine Zeile findet, die mit 'From' beginnt. Dann führt es den folgenden Code aus. –