Python Forum
Debugging error, while loop out of range
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Debugging error, while loop out of range
#1
Hi, I am stuck at this point
would appreciate if someone can help me


My Problem:
I have a error in the output, the data output is correct but, the loop is out of range and I don't know how to fix it.

Code:

exam_file=open('mean_text.txt', 'a+')
    exam_file.write("Rio de Janeiro,Brazil,30.0,18.0\n")
    
    exam_file.seek(0)
    headings=exam_file.readline().split(",")
    
    exam_file.seek(0,1)
    city_temp=exam_file.readline().split(",")
    
    while city_temp:
        print(headings[0].capitalize()+" of "+city_temp[0]+" "+ headings[2]+" is "+city_temp[2]+" Celsius")
        city_temp = exam_file.readline().split(",")
    
    exam_file.close()
Output:

Output:
City of Beijing month ave: highest high is 30.9 Celsius Traceback (most recent call last): City of Cairo month ave: highest high is 34.7 Celsius City of London month ave: highest high is 23.5 Celsius File "./Module4task.py", line 11, in <module> City of Nairobi month ave: highest high is 26.3 Celsius City of New York City month ave: highest high is 28.9 Celsius print(headings[0].capitalize()+" of "+city_temp[0]+" "+ headings[2]+" is "+city_temp[2]+" Celsius") City of Sydney month ave: highest high is 26.5 Celsius IndexError: list index out of range City of Tokyo month ave: highest high is 30.8 Celsius City of Rio de Janeiro month ave: highest high is 30.0 Celsius
Content of file:

Quote:city,country,month ave: highest high,month ave: lowest low
Beijing,China,30.9,-8.4
Cairo,Egypt,34.7,1.2
London,UK,23.5,2.1
Nairobi,Kenya,26.3,10.5
New York City,USA,28.9,-2.8
Sydney,Australia,26.5,8.7
Tokyo,Japan,30.8,0.9

Error:
Error:
Traceback (most recent call last): File "./Module4task.py", line 11, in <module> print(headings[0].capitalize()+" of "+city_temp[0]+" "+ headings[2]+" is "+city_temp[2]+" Celsius") IndexError: list index out of range
Expect Output:

Output:
City of Beijing month ave: highest high is 30.9 Celsius City of Cairo month ave: highest high is 34.7 Celsius City of London month ave: highest high is 23.5 Celsius City of Nairobi month ave: highest high is 26.3 Celsius City of New York City month ave: highest high is 28.9 Celsius City of Sydney month ave: highest high is 26.5 Celsius City of Tokyo month ave: highest high is 30.8 Celsius City of Rio De Janeiro month ave: highest high is 30.0 Celsius
My Task:

Add the weather for Rio

1. Open the file in append plus mode ('a+')

2. Write a new line for Rio de Janeiro "Rio de Janeiro,Brazil,30.0,18.0\n"
Grab the column headings
1. use .seek() to move the pointer to the beginning of the file
2. read the first line of text into a variable called: headings
3. convert headings to a list using .split(',') which splits on each comma
# [ ] The Weather: open file, read/print first line, convert line to list (splitting on comma)


Read the remaining lines from the file using a while loop

1. assign remaining lines to a city_temp variable
2. convert the city_temp to a list using .split(',') for each .readline() in the loop
3. print each city & the highest monthly average temperature
4. close mean_temps

Tips & Hints:

• print headings to determine indexes to use for the final output (what is in headings[0], [1], [2]..?)

• the city_temp data follows the order of the headings (city_temp[0] is described by headings[0])

• The output should look like: "month ave: highest high" for Beijing is 30.9 Celsius

• convert city_temp to lists with .split(',')

# [ ] The Weather: use while loop to print city and highest monthly average temp in celsius
Reply
#2
Finally fix the problem with:

while len(city_temp) == len(headings)
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How can I run a function inside a loop every 24 values of the loop iteration range? mcva 1 2,131 Sep-18-2019, 04:50 PM
Last Post: buran
  Using a range and for loop - temp converter rattlerskin 5 15,685 Jan-20-2017, 09:15 PM
Last Post: sparkz_alot

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020