Цитирование через несколько индексов в Python

63
8

Это перекрестная запись от reddit (указана в этом направлении моей SO). Любая помощь была бы высоко оценена.

Я работаю в середине домашней работы, и у меня было несколько вопросов по чтению нескольких индексов. Результат, который я ищу, состоит в том, чтобы создавать списки, которые питаются друг с другом. В этом случае он должен составить список фруктов, а затем спросить, насколько дорогий плод, а затем спросить, сколько у клиента перед отображением общей суммы для каждого клиента, зацикливаясь на каждом клиенте, пока вы не нажмете. Это введение в класс программирования, написанное в Python 2.7

Правильный вывод будет выглядеть так:

Enter a fruit name (or done): Mango
Enter a fruit name (or done): Strawberry
Enter a fruit name (or done): Kiwi
Enter a fruit name (or done): done

Enter the price for Mango: 2.54
Enter the price for Strawberry: 0.23
Enter the price for Kiwi: .75

Enter customer name (or done): Bob
Mango($2.54) Quantity: 3
Strawberry($0.23) Quantity: 10
Kiwi($0.75) Quantity: 2

Bob total purchase is $11.42

Enter customer name (or done): Lisa
Mango($2.54) Quantity: 10
Strawberry($0.23) Quantity: 40
Kiwi($0.75) Quantity: 20

До сих пор я создал программу, которая может (более или менее) строить список фруктов, запрашивать цену и вычислять общее количество, но я не могу понять, как интегрировать окончательный "список клиентов". Мой код следующим образом:

flist = []
print "Enter a fruit name (or done): " ,
fruit_name = raw_input()
while fruit_name != 'done':
flist.append(fruit_name)
print "Enter a fruit name (or done): ",
fruit_name = raw_input()

print " "

price_list = []
for p in flist:
print "Enter the price for " + p + ":",
price = float(raw_input())
price_list.append(price)

qlist = []
for q in range(len(flist)):
print "How many " + str(flist[q]) + ' (' + '$' + str(price_list[q]) + ')' ":",
quantity = raw_input()
qlist.append(quantity)

total = 0
for i in range(len(flist)):
total += float(price_list[q]) * int(qlist[q])
print "Your total purchase is $ " + str(total)

Я не знаю, как продолжить дальше. Любая помощь была бы высоко оценена. Заранее большое спасибо.

спросил(а) 2021-01-25T15:05:58+03:00 4 месяца, 2 недели назад
1
Решение
89

Ну, вот некоторые идеи, которые помогут вам начать работу без выполнения задания для вас:

    Учитывая вашу конечную цель - распечатать список клиентов, содержащий то, что у них есть, и общее количество клиентов, вероятно, вы должны хранить все эти данные вместе, а не в отдельных списках. Поэтому подумайте над тем, чтобы использовать что-то вроде словаря, где ваши ключи являются именами клиентов, а значение - это дополнительный словарь, содержащий количество каждого фрукта и другую соответствующую информацию. Если вы сохраните все эти данные вместе, становится намного проще распечатывать одну информацию о клиентах

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

    Когда вы перебираете имена фруктов, вы можете использовать их в качестве дополнительных ключей для одного клиента, где значение - это количество каждого фрукта

    Вы хотите, чтобы другой дикт держал цены за каждый фрукт

Когда у вас есть такая структура, вы можете сделать что-то подобное, чтобы распечатать все:

#Get these values with loops like you're currently doing
customerDict = {"bob": {"orange": 3,"apple": 1},
"alice": {"orange": 2,"apple": 1}}

priceDict = {"orange": 1.2, "apple": 1.1}

#get this from user input
customerName = "bob"

total = 0

print customerName
for k,v in customerDict[customerName].items():
print "%s (%s), Quantity: %s" % (k, str(priceDict[k]), str(v))
total += (priceDict[k] * v)

print "Total: " + str(total)

Что вернет что-то вроде:

bob
orange (1.2), Quantity: 3
apple (1.1), Quantity: 1
Total: 4.7

ответил(а) 2021-01-25T15:05:58+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема