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

Как сделать цикл во 2 списке и выйти на финал кода тестового задания?

Тестовое задание, дано:
def analyze_sales(input_strings):
    'code'

lines = []
while True:
    try:
        line = input()
        if line == "":
            break
    except EOFError:
        break
    lines.append(line)


for product in analyze_sales(lines):
    print(product)

Нужно вывести список товаров, чья средняя цена превышает заданный порог.
Формат ввода:
apple,100,200,150
orange,80,90,85
70

70 это порог.
Формат вывода:
apple,150.0
orange,85.0

С первой частью кода понятно, можно так:
def analyze_sales(input_strings):
    res_int = [int(i) for i in input_strings.split(',') if i.isdigit()]
    average = sum(map(int, res_int)) / len(res_int)
    res_str = ''
    for i in input_strings:
        if i.isalpha():
            res_str = ''.join([res_str, i])

Можно более изящно, как подсказал Aragorn Aragorn :
def analyze_sales(input_strings):
    parts = input_strings.split(',')
    name = parts[0]
    prices = list(map(int, parts[1:]))
    average_price = sum(prices) / len(prices)

Дальше нужно все-равно прописывать блок со списками и инпутом(в тесте он в конце кода).
Я дошел до :
def analyze_sales(input_strings):
    parts = input_strings.split(',')
    name = parts[0]
    prices = list(map(int, parts[1:]))
    average_price = sum(prices) / len(prices)
    lines = []
    while True:
        line = input()
        if line == '':
            break
        lines.append(line)
    limit = int(lines[-1])
    products = lines[:-1]
    # results = []
    # for product in products:
    #     result = analyze_sales(product)
    #     if result:
    #         results.append(result)

    if average_price > limit:
        return f'{name},{average_price}'
    return None

То что закомментировано - не правильно. Нужно еще список results крутануть в цикле, чтобы вытащить элементы из products и как то выйти на на финал тестового кода.
  • Вопрос задан
  • 79 просмотров
Подписаться 1 Простой 15 комментариев
Решения вопроса 1
Lord_of_Rings
@Lord_of_Rings
Северный странник. Злой, но добрый
def analyze_sales(input_strings):
    
    limit = int(input_strings[-1]) # Последняя строка - это порог
    products = input_strings[:-1] # Всё остальное - товары
    # Здесь должно быть всё понятно
    results = []
    for product in products:
        parts = product.split(',')
        name = parts[0]
        prices = list(map(int, parts[1:]))
        average_price = sum(prices) / len(prices)

        if average_price > limit:
            results.append(f'{name},{average_price:.1f}')

    return results

lines = []
while True:
    try:
        line = input()
        if line == "":
            break
    except EOFError:
        break
    lines.append(line)

for product in analyze_sales(lines):
    print(product)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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