在Python中循环使用多个索引

时间:2016-04-05 02:35:12

标签: python loops indices

这是来自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's 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) 

我不确定如何从这里继续。任何帮助将不胜感激。非常感谢你提前。

1 个答案:

答案 0 :(得分:0)

嗯,有一些想法可以让你在没有为你做任务的情况下开始:

  • 鉴于您的最终目标是打印出一个客户列表,其中包含他们拥有的成果和客户总数,您应该将所有这些数据存储在一起,而不是存储在单独的列表中。因此,请考虑使用类似字典的内容,其中您的密钥是客户名称,值是包含每个水果的数量的子字典,以及其他相关信息。如果将所有这些数据存储在一起,则打印单个客户信息变得更加容易

  • 您可能要做的第一件事就是询问客户名称。然后你可以用它来设置字典中的第一个键。

  • 当您遍历水果名称时,您可以将这些用作该客户的附加键,其中值是每个水果的数量

  • 你想要另一个字典来保存每种水果的价格

一旦你拥有了这种类型的结构,你就可以做这样的事情来打印出来:

#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