2017-12-06 4 views
0

ich zur Zeit habe Probleme mit einer while-Schleife in PythonProbleme mit Python while-Schleife

! curl https://raw.githubusercontent.com/MicrosoftLearning/intropython/master/world_temp_mean.csv -o mean_temp.txt 

mean_temp = open("mean_temp.txt", "a+") 
mean_temp.write("Rio de Janeiro,Brazil,30.0,18.0\n") 
mean_temp.seek(0) 
headings = mean_temp.readline().split(",") 

while mean_temp.readline(): 
    city_temp = mean_temp.readline().split(",") 
    print(headings[0].title(), "of", city_temp[0], headings[2], "is", 
    city_temp[2], "Celcius") 

Dieser Code zur Zeit die erste und jede zweite Zeile überspringt, wenn

Stromausgang Druck:

Stadt von Kairo Monat alle: höchstes Hoch ist 34.7 Celsius

Stadt von Nairobi Monat alle: höchstes Hoch ist 26.3 Celcius

City of Sydney Monat ave: höchste hoch ist 26,5 Celcius

Stadt Rio de Janeiro Monat ave: höchste hoch ist 30,0 Celcius

Erforderliche Ausgabe:

Stadt Peking Monat Ave: höchste Hoch ist 30,9 Celsius

Stadt Kairo Monat Ave: höchste Hoch ist 34,7 Celsius

City of London Monat ave: höchste hoch ist 23,5 Celsius

Stadt Nairobi Monat ave: höchste hoch ist 26,3 Celsius

Stadt New York City Monat ave: höchste hoch ist 28,9 Celsius

City of Sydney Monat ave: höchste hoch ist 26,5 Celsius

City of Tokyo Monat ave: höchste hoch ist 30,8 Celsius

Stadt Rio De Janeiro Monat ave: hohe höchsten ist 30,0 Celsius

Danke für Ihre Hilfe

+2

Sie rufen 'readline()' einmal in der Bedingung und einmal in den Körper der Schleife. Sie verarbeiten nur die Ausgabe an einem dieser Orte. So vermisst du alternative Linien. – khelwood

Antwort

1

A while-Schleife zu verwenden, hier nicht die richtige Sache ist. Verwenden Sie stattdessen eine for-Schleife. In Python kann eine Datei direkt über iteriert werden.

for line in mean_temp: 
    city_temp = line.split(",") 
0

Sie lesen 2 Zeilen in einer Schleife und drucken sie einmal. Stattdessen verwenden Sie den folgenden Code anstelle der While-Schleife:

for row in mean_temp: 
    city_temp = row.split(",") 
    print(headings[0].title(), "of", city_temp[0], headings[2], "is", city_temp[2], "Celcius")