Задать вопрос

Почему input() не сохраняет значения в списке?

Нужно вывести список товаров, чья средняя цена превышает заданный порог.

Формат ввода:
apple,100,200,150
orange,80,90,85
70

70 это порог.

Формат вывода:
apple,150.0
orange,85.0

Код:
def f(s):
    res_int = ''.join(i if i.isdigit() else ' ' for i in s).split()
    average = sum(map(int, res_int)) / len(res_int)
    limit = 70
    res_str = ''
    for i in s:
        if i.isalpha():
            res_str = ''.join([res_str, i])
    if average > limit:
        return f'{res_str},{average}'
    else:
        return False

lines = []
while True:
    try:
        line = input()
        if line == "":
            break
    except EOFError:
        break
    lines.append(line)
for product in f(lines):
    print(product)

2 проблемы:
input() не сохраняет значения в списке и порог (limit) пока прописал отдельной переменной (нужно вводить инпутом)
  • Вопрос задан
  • 93 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
Lord_of_Rings
@Lord_of_Rings
Северный странник. Злой, но добрый
Как-то у вас все запутано и непонятно, поэтому я просто написал свой вариант решения:
код
def process_line(line, limit):
    # Разделяем строку на название товара и цены
    parts = line.split(',')
    name = parts[0]
    prices = list(map(int, parts[1:]))

    # Вычисляем среднюю цену
    average_price = sum(prices) / len(prices)

    # Возвращаем строку с названием товара и средней ценой, если она превышает порог
    if average_price > limit:
        return f'{name},{average_price:.1f}'
    return None

def main():
    lines = []
    while True:  
        line = input()
        if line == "":
            break
        lines.append(line)
        

    # Последняя строка - это порог
    limit = int(lines[-1])
    products = lines[:-1]

    results = []
    for product in products:
        result = process_line(product, limit)
        if result:
            results.append(result)

    for res in results:
        print(res)

if __name__ == "__main__":
    main()
Ответ написан
Vindicar
@Vindicar
RTFM!
input() не сохраняет значения в списке

Всё оно сохраняет, просто вот эта строка - полная чушь.
res_int = ''.join(i if i.isdigit() else ' ' for i in s).split()

У тебя s - список строк. Ты заменяешь на пробелы все строки в списке, которые содержат что-то кроме цифр (а это все строки в твоём списке!), затем соединяешь строки в одну и делишь их по пробелу. Конечно, у тебя получится пустой список в итоге.
У меня такое чувство, что этот код вообще предполагал, что в s будет одиночная строка, а не список - но даже тогда он не сделает что тебе надо.

Нужно каждую строку в s разделить по символу "," и все элементы полученного списка, кроме нулевого, превратить в числа. Дальше уже будет просто.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
11 дек. 2024, в 22:30
250000 руб./за проект
11 дек. 2024, в 22:15
10000 руб./за проект
11 дек. 2024, в 22:10
3000 руб./за проект