Как создать пару вводимых значений через цикл?

Задача: Толик является владельцем обувного магазина. В его магазине есть количество обуви. У него есть список, содержащий размер каждой обуви, которая есть в его магазине. Есть количество клиентов, готовых платить сумму денег только в том случае, если они получат обувь желаемого размера.

Ваша задача — посчитать, сколько денег заработал Толик.

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

Образец ввода:

10

2 3 4 5 6 8 7 6 5 18

6

6 55

6 45

6 55

4 40

18 60

10 50

Вывод:

200

Объяснение: Покупатель 1 : Купил обувь 6-го размера за 55 долларов. Покупатель 2 : Купил обувь 6-го размера за 45 долларов. Покупатель 3 : Размер 6 больше не доступен, поэтому не покупайте. Покупатель 4 : Купил обувь четвертого размера за 40 долларов. Покупатель 5 : Купил обувь 18-го размера за 60 долларов. Покупатель 6 : Размер 10 недоступен, поэтому не покупайте.

Всего заработано денег = 200

number_of_shoes = int(input())
all_shoe_size = set(map(int, input().split(' ')))
print(all_shoe_size)
number_of_clients = int(input())

lst1 = []
lst2 = []
lst3 = []
lst4 = []
lst5 = []
lst6 = []

for i in range(number_of_clients):
    a, b = map(int, input().split())
    lst1.append(a)
    lst1.append(b)
print(f'lst 1: {lst1}')
print(f'lst 2: {lst2}')
#10
#2 3 4 5 6 8 7 6 5 18
#6
#6 55   Купил обувь 6-го размера за 55 долларов
#6 45   Купил обувь 6-го размера за 45 долларов
#6 55   Размер 6 больше не доступен, поэтому не покупайте.
#4 40   Купил обувь четвертого размера за 40 долларов
#18 60  Купил обувь 18-го размера за 60 долларов
#10 50  Размер 10 недоступен, поэтому не покупайте

#200

Как сделать нужное колличество списков зная сколько вводов потребуется? И как занести значения в каждый список используя цикл?


Ответы (1 шт):

Автор решения: Сергей

Вам не нужно много списков, этого же не требуют в задаче. Достаточно одного с кортежами, или для наглядности двух, как в примере ниже (это не самый эффективный способ, но он нагляден, и для учебных примеров я предпочитаю его). Просто чуть переделайте своё решение, вы в этом же направлении и шли.

import sys

size_of_client = [None] * number_of_clients
price_of_client = [None] * number_of_clients 

for i in range(number_of_clients):
    size_of_client[i], price_of_client[i] = map(int, sys.stdin.readline().split())

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

import sys

request_of_client = []
for _ in range(number_of_clients):
    a, b = map(int, sys.stdin.readline().split())
    request_of_client.append((a,b))

Сделал всё же и односточником со списком из кортежей:

request_of_client = [(tuple (i for i in tuple (map(int, input().split())))) for _ in range (number_of_clients)]
→ Ссылка