Python

Питон простенький код не могу понять в чем проблема нужно подсчитать кол во комнат площадью 9.2 кв м

hut = [9.2, 3.5, 8.1, 2.3, 9.2, 4.2, 6.9] # - список всех комнат
c_rums = 0 # - делаю переменную для занесения комнат
def c_hut(): # - делаю функцию которая будет подсчитывать кол-во комнат
for huts in hut: # - даю функции список
if huts == 9.2: # - проверка каждой комнаты из списка
c_rums + 1 # - если комната равна 9.2 то к перменной c_rums прибавляется значение 1
print("Комнат с площадью 9.2 кв/м", c_rums) # - проверка работоспособности
c_hut() # - вызов функции

так вот прикол в том , что по итогу к c_rums ничего не прибавляется и выводит значение 0
Начнём с того, что конструкция c_rums + 1 НЕ увеличивает значение переменной c_rums.
Вторая пролема в том, что любое присваивание c_rums внутри функции приведёт к созданию локальной переменной c_rums и никак не повлияет на значение глобальной c_rums.

Минимальные правки твоего кода:
 hut = [9.2, 3.5, 8.1, 2.3, 9.2, 4.2, 6.9] # - список всех комнат 
c_rums = 0 # - делаю переменную для занесения комнат
def c_hut(): # - делаю функцию которая будет подсчитывать кол-во комнат
global hut, c_rums # будут использоваться глолбальные переменные
for huts in hut: # - даю функции список
if huts == 9.2: # - проверка каждой комнаты из списка
c_rums += 1 # - если комната равна 9.2 то к перменной c_rums прибавляется значение 1
print("Комнат с площадью 9.2 кв/м", c_rums) # - проверка работоспособности
c_hut() # - вызов функции
Как твой код можно переписать правильно:
 def c_hut(h, s): return h.count(s)

hut = [9.2, 3.5, 8.1, 2.3, 9.2, 4.2, 6.9]
print("Комнат с площадью 9.2 кв/м", c_hut(hut, 9.2))
Николай Романов
Николай Романов
86 052
Лучший ответ
Проблема в вашем коде заключается в том, что вы не обновляете значение c_rums в цикле. Вместо c_rums + 1 нужно использовать c_rums += 1, чтобы увеличивать значение c_rums на 1 в каждой итерации цикла.

Вот исправленный код:

 hut = [9.2, 3.5, 8.1, 2.3, 9.2, 4.2, 6.9] # - list of rooms 
c_rums = 0 # - make room variable

def c_hut(): # - создает функцию, которая будет подсчитывать количество комнат
for huts in hut: # - дать список для этой функции
if huts == 9.2: # - проверка каждой комнаты в списке
c_rums += 1 # - если номер равен 9.2, то к переменной c_rums будет добавлено значение 1
print("Rooms with area 9.2 sq/m", c_rums) # - проверка

c_hut() # - вызвать функцию
Grigoriy Mak
Grigoriy Mak
1 957
Алишер Якубов по итогу выдает, что комната только 1. почему? в списке их 2
Потому сто оператор сложения + возвращает значение1 + значение2, а не изменяет значение1. Ты не присваиваешь переменной новое значение. Поменяй на c_rums += 1, это изменит саму переменную

P.S.
Ну а вообще, для подсчёта частоты значения в списке можно использовать встроенный метод count

list.count(val)

В твоём случае hut.count(9.2)
Алишер Якубов про метод count не знал, спасибо. Поменял c_rums =+ 1 , по итогу выдает , что только 1 комната со значением 9.2 , почему так
Сергей Завьялов Потому что c-rums в функции - это локальная переменная, а значение глобальной вообще не изменяется. Не знаю, как вам выводит 1, если должно выводить сообщение об ошибке (если вы, конечно, не правили свой код)