22
Апр
2017

Как реализовать цикл, который будет работать, пока есть строки для ввода

Здравствуйте.

Задачка по этой ссылке.

Условие

Дана база данных о продажах некоторого интернет-магазина. Каждая строка входного файла представляет собой запись вида Покупатель товар количество, где Покупатель — имя покупателя (строка без пробелов), товар — название товара (строка без пробелов), количество — количество приобретенных единиц товара.

Создайте список всех покупателей, а для каждого покупателя подсчитайте количество приобретенных им единиц каждого вида товаров. Список покупателей, а также список товаров для каждого покупателя нужно выводить в лексикографическом порядке.

Задачу я решил, только не знаю как реализировать цикл, который будет работать, пока есть строки для ввода. Так как надо написать код для варианта, когда мы не знаем сколько точно будет введено строк.

Мое решение:

dic = {}
while True: #это неверно
    a = input().split(' ')
    if not a[0] in dic:
        dic[a[0]] = {a[1]:a[2]} 
    else:
        if not a[1] in dic[a[0]].keys():
            dic[a[0]].update({a[1]:a[2]} )
        else:
            dic[a[0]][a[1]]=int(dic[a[0]][a[1]]) + int(a[2])

for x in sorted(dic.keys()):
    print(x +':')
    for y in sorted(dic[x].keys()):
        print (y, dic[x][y])

Источник: https://ru.stackoverflow.com/questions/657131/%D0%9A%D0%B0%D0%BA-%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-%D1%86%D0%B8%D0%BA%D0%BB-%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B9-%D0%B1%D1%83%D0%B4%D0%B5%D1%82-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%82%D1%8C-%D0%BF%D0%BE%D0%BA%D0%B0-%D0%B5%D1%81%D1%82%D1%8C-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8-%D0%B4%D0%BB%D1%8F-%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0

Share

Тебе может это понравится...