Как создать пару вводимых значений через цикл?
Задача: Толик является владельцем обувного магазина. В его магазине есть количество обуви. У него есть список, содержащий размер каждой обуви, которая есть в его магазине. Есть количество клиентов, готовых платить сумму денег только в том случае, если они получат обувь желаемого размера.
Ваша задача — посчитать, сколько денег заработал Толик.
Первая строка содержит, количество обуви. Вторая строка содержит разделенный пробелами список всех размеров обуви в магазине. Третья строка содержит, количество клиентов. Следующие строки содержат разделенные пробелами значения размера обуви желаемого заказчиком, и цена обуви. Выведите сумму денег, заработанную Толиков.
Образец ввода:
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)]