@Programmer_Jr

Яндекс Практикум. 6 урок «Счетчики». Не могу найти ошибку в коде, поможете?

Счетчики, Яндекс Практикум, 6 урок.
Задание звучит так:
Есть списки средних дневных температур в Москве за май 2017 и 2018 годов. Создайте функцию comfort_count(temperatures) для подсчёта комфортных дней в переданном списке — дней с температурой воздуха от 22 до 26 градусов включительно.
Функция в результате работы должна вывести на экран строку 'Количество комфортных дней в этом месяце: N', где N — результат подсчёта в цикле с условием. Сначала посчитайте комфортные дни в мае 2017-го года, а потом — в мае 2018-го.

Вот код:
may_2017 = [24, 26, 15, 10, 15, 19, 10, 1, 4, 7, 7, 7, 12, 14, 17, 8, 9, 19, 21, 22, 11, 15, 19, 23, 15, 21, 16, 13, 25, 17, 19]
may_2018 = [20, 27, 23, 18, 24, 16, 20, 24, 18, 15, 19, 25, 24, 26, 19, 24, 25, 21, 17, 11, 20, 21, 22, 23, 18, 20, 23, 18, 22, 23, 11]

# допишите код ниже
N = 0
def comfort_count(temperatures):
    for temp in temperatures:
        if temp >=22 and temp <=26:
            N = N + 1
            print("Количество комфортных дней в этом месяце: ", N)

#дальше код не меняйте
comfort_count(may_2017) # узнаем, что было в мае 2017 г.
comfort_count(may_2018) # узнаем, что было в мае 2018 г.

Жирным шрифтом написан мой код
Ошибка выдается такая:

Traceback (most recent call last):
File "main.py", line 12, in
comfort_count(may_2017) # узнаем, что было в мае 2017 г.
File "main.py", line 9, in comfort_count
N = N + 1
UnboundLocalError: local variable 'N' referenced before assignment
  • Вопрос задан
  • 723 просмотра
Пригласить эксперта
Ответы на вопрос 3
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Стоило прочитать учебник прежде, чем браться за яндекс практикум.
Ответ написан
@mrxor
Simple is better than complex
у вас счетчик был за пределами функции, сделайте так:
def comfort_count(temperatures):
    n = 0
    for temp in temperatures:
        if temp >= 22 and temp <= 26:
            n += 1
    print("Количество комфортных дней в этом месяце: ", n)
Ответ написан
@dimoff66
Кратко о себе: Я есть
Внесите N внутрь процедуры, почему она объявлена вне? И также print не должен быть внутри цикла, иначе он будет выдавать новое число при каждом нахождении удовлетворяющего условиям элемента а не за весь месяц.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы