将两个列表中的值相乘,然后将它们打印出来python

问题描述:

我试图让我可以将每个成本乘以相应的销售产品数量。例如,1.99 * 10,1.49 * 5等等。另外,我似乎无法弄清楚如何根据列表中的成本打印最昂贵或最便宜的产品的产品名称。我试着将product_cost中的i与product_sold中的相应i相乘,但答案似乎没有解决。有没有人有任何想法如何解决这个问题?由于将两个列表中的值相乘,然后将它们打印出来python

然而,用下面的代码,

# product lists 
product_names = ["prime numbers", "multiplication tables", "mortgage calculator"] 
product_costs = [1.99, 1.49, 2.49] 
product_sold = [10, 5, 15] 

def report_product(): 
    total = 0 
    print("Most expensive product:", max(product_costs)) 
    print("Least expensive product:", min(product_costs)) 
    for i in range(len(product_costs)): 
     total += i * product_sold[i] 
    print("Total value of all products:", total) 

selection = "" 

while selection != "q": 
    selection = input("(s)earch, (l)ist, (a)dd, (r)emove, (u)pdate, r(e)port or (q)uit: ") 

    if selection == 'q': 
     break 
    elif selection == 's': 
     search_product() 
    elif selection == "l": 
     list_products() 
    elif selection == "a": 
     add_products() 
    elif selection == "r": 
     remove_products() 
    elif selection == "u": 
     update_products() 
    elif selection == "e": 
     report_product() 
    else: 
     print("Invalid option, try again") 

print("Thanks for looking at my programs!") 
+0

题外话:'如果选择==“Q”:break'是多余的,因为while循环的条件是'而选择=“q''使得环打破反正 – abccd

+0

u能显示代码search_product, list_products,remove_products,update_products,report_product函数.. ?? – shiva

得到相应的指数相乘的一个新的数组,

product_costs = [1.99, 1.49, 2.49] 
product_sold = [10, 5, 15] 
product_mult = list(map(lambda x,y: x*y, product_costs,product_sold)) 

要找到它的名称产品是最昂贵的,

index = product_costs.index(max(product_costs)) 
most_expensive = product_names[index] 
+1

代码'[x * y for product_costs for y in product_sold]'产生所有九种可能的产品:'[19.9,9.95,29.85,14.9,7.45,22.35,24.900000000000002,12.450000000000001,37.35]'不是三个OP在寻找。 – cdlane

+0

谢谢,纠正! – Windmill

+0

代码'index = product_mult.index(max(product_mult))'发现最赚钱的产品,不一定是最昂贵的产品。 – cdlane

虽然不一定是最优的,但您可以用最少的代码usi得到答案NG zip()

def report_product(): 

    print('Most expensive product:', max(zip(product_costs, product_names))[1]) 

    print('Least expensive product:', min(zip(product_costs, product_names))[1]) 

    total_earned = sum(cost * sold for cost, sold in zip(product_costs, product_sold)) 

    print('Total earned from all products sold: ${:.2f}'.format(total_earned)) 

输出

Most expensive product: mortgage calculator 
Least expensive product: multiplication tables 
Total earned from all products sold: $64.70 

>>> prod_m = [a*b for a,b in zip(product_costs, product_sold)] 
>>> prod_m 
[19.9, 7.45, 37.35] 
>>> product_names[product_costs.index(max(product_costs))] 
'mortgage calculator' 
>>> product_names[product_costs.index(min(product_costs))] 
'multiplication tables' 

您还可以使用numpy的两个列表相乘。

>>> import numpy 
>>> list(numpy.array(product_costs)*numpy.array(product_sold)) 
[19.899999999999999, 7.4500000000000002, 37.350000000000001]