Ich bin neu bei Python und mache einige elementare Codierungsaufgaben auf edx mit dem Jupityr-Notebook. Ich habe bei einer meiner Aufgaben einen Indexfehler festgestellt, den ich nicht genau herausfinden kann. Die Zuweisung hat mir eine Textdatei Zeile für Zeile innerhalb einer while-Schleife gelesen und die Ausgabe in einem bestimmten Format ausgegeben. Mein Code ist wieIndexfehler beim Lesen der TXT-Datei
city_temp = mean_temp.readline().strip().split(',')
while city_temp:
print (headings[0].title(), "of", city_temp[0], headings[2], "is", city_temp[2], "Celsius")
city_temp = mean_temp.readline().strip().split(',')
folgt Der Code läuft durch die gesamte Datei, sondern die Beendigung der ‚while‘ Schleife in der leeren Zeile, geht es weiter zu laufen und eine leere Liste zu erstellen. Ich bin mir nicht sicher, warum das passiert und ich kann mir selbst keine Lösung vorstellen. Ich habe versucht, einen 'if' Test für eine leere Zeichenfolge und brechen, und auch eine zusätzliche Zeile mit leerem Text zu schreiben, aber keine der beiden Optionen führte zu einem Erfolg. Wenn jemand eine Idee hat, würde ich es sehr schätzen!
Ich habe einen Auszug von dem, was die TXT-Datei enthält auch unten eingefügt. Es gibt weitere Städte, aber ich finde es nicht notwendig, alle umfassen ein:
city,country,month ave: highest high,month ave: lowest low
Beijing,China,30.9,-8.4
Dies ist der Index Fehler war ich immer: (sorry für die schlechte Formatierung, das Lernen noch
IndexError Traceback (most recent call last)
<ipython-input-18-6ea7e8e263b5> in <module>()
5 while city_temp:
6
----> 7 print (headings[0].title(), "of", city_temp[0], headings[2], "is", city_temp[2], "Celsius")
8 city_temp = mean_temp.readline().strip().split(',')
9
IndexError: list index out of range
Um Ihren IndexError tatsächlich zu lösen, bearbeiten Sie in Ihrer Frage Ihre gesamte Fehlermeldung, einschließlich der Traceback. city_temp sollte eine leere Liste sein, wenn es eine leere Zeile liest (strip() löscht alle Leerzeichen, bevor die Trennung erfolgt), also gibt es hier noch etwas anderes. –
@AlanLeuthard Ich habe den gesamten Fehler beigefügt, den ich bekommen habe, ich bin sehr neugierig zu verstehen, warum dieser Fehler passiert – thatbrownkid
Ahhhh ... nur getestet. 'empty_string.split()' gibt eine leere Liste zurück. 'empty_string.split (', ')' gibt eine Liste mit einem leeren String zurück. Die Liste ist nicht leer, daher ist city_temp True. Ändern Sie 'while city_temp' in 'while city_temp [0]', um die Leere der Liste zu überprüfen. Oder verwende einen try-Block. –