我已经被程序困住了将近一个星期。我正在尝试创建一个程序,在两个并行数组(名称和销售额)中输入销售人员的名称及其当月的总销售额,并确定哪个销售人员的销售额最高(最大)
Names = [" "]*3
Sales = [0]*3
Index = 0
Max = 0
K = 0
Names[K] = input("Enter salesperson's name and monthly sales: (To Exit enter * or 0)")
Sales[K] = int(input("Enter monthly sales:"))
while (Names[K] !="*"):
if Sales[K] > Max :
index = K
Max = Sales[index]
K = K + 1
print("Max sales for the month: ",Max)
print("Salesperson: ",(Names[Index]))
它没有提示用户3次获取姓名和工资,而是只询问一次,我收到此错误:
Enter salesperson's name and monthly sales: (To Exit enter * or 0)jon Enter monthly sales:3
Traceback (most recent call last):
File "C:\Users\User\Downloads\sales.py", line 18, in <module> while (Names[K] !="*"):
IndexError: list index out of range
答案 0 :(得分:0)
我建议不要使用&#39;并行数组&#39;您将名称和销售数字放入dictionary。以下是您需要的内容:
totals = {}
name = input("enter name: ")
while name:
sales = int(input("enter sales: "))
totals[name] = sales
name = input("enter name: ")
此代码也将继续接受新名称,直到您输入空白名称。
从这里开始你应该像这样使用pythons Counter
类:
# move this import to the top of the file
from collections import Counter
c = Counter(totals)
max_seller = max(c)
print("Max sales for the month", totals[max_seller])
print("Salesperson:", max_seller)
答案 1 :(得分:0)
您的代码仅在循环开始之前提示用户输入一次,因此除非在第一次输入*,否则循环将永远不会结束。由于您将数组限制为大小3,因此当K大于2时会出现错误。在Python中,您可以使用append方法来增加列表的大小,但如果您希望它们像固定长度数组那样您需要在K变得等于数组大小之前,在代码中包含一些内容,以便在用户无法输入*时捕获。