SyntaxError
вызвано неправильным отступом
# Error
try:
print (formatted_data1)
# No Error
try:
print (formatted_data1)
IndexError
вызвано попыткой получить доступ к значению, превышающему допустимый индекс.Например, a
- это length
из 3
, все действительные права доступа к a
: a[0]
, a[1]
и a[2]
.Если вы попытаетесь получить [3], вы получите IndexError
следующий код
a = ['a','b','c']
print(len(a))
print(a[3])
yeild
$ python test.py
3
Traceback (most recent call last):
File "test.py", line 3, in <module>
print(a[3])
IndexError: list index out of range
Обычно сообщение об ошибке сообщит вам, гдеошибка, например, File "test.py", line 3
, как указано выше.
Я не уверен, хотите ли вы, чтобы последнее значение было только последним.
Если это так, попробуйте использовать len
Функция, чтобы получить длину, прежде чем пытаться получить значение, чтобы убедиться, что вы никогда не будете пытаться выйти за пределы последнего.- 1
потому что это zero-based index
import requests
api_address = 'http://api.openweathermap.org/data/2.5/forecast/daily?zip=10603&cnt=16&appid=fe0b46e2c4f3c410fc3f8ac8d3a17600&q'
zip_code = 79326
url = api_address + str(zip_code)
json_data = requests.get(url).json()
data_length = len(json_data['list']) - 1
print(data_length)
formatted_data = json_data['list'][data_length]['temp']
print(formatted_data)
Советы по отладке : используйте функцию print
, чтобы распечатать значение и посмотреть, имеет ли оно смысл.