函数和列表如何使用函数关联两个列表?

2024-10-06 09:11:57 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我第一次在这里问问题,我是一个新的编程,所以要温柔。我试图创建一个代码,在该代码中,用户输入一周中每一天的销售额,函数显示每天的销售额,并显示销售额/平均销售额/实际销售额最高的一天。你知道吗

预期结果如下:

Mondays sales: $200
Tuesdays sales: $100
Wednesday sales: $50
Thursday sales: $75
Friday sales: $100
Saturday sales: $250
Sunday sales: $75
Highest sales achieved on Saturday with $250

然而,现在的结果是打印7次,每个和我不知道如何参考最大值与相关的一天

到目前为止,我掌握的情况如下:

days_week=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]

def fillList(salesList):
    for index in range(len(days_week)):
        user_input=int(input("Enter sales for "+ days_week[index]+": " ))
        salesList.append(user_input)


def showSales(salesList):
    for sales in salesList:
        for index in range(len(days_week)):
                print(days_week[index],"sales: $", sales)

def highestSales(salesList):
    print("Highest sales of the week was achieved on",max(salesList))



def main():
    salesList=[]
    fillList(salesList)
    showSales(salesList)
    highestSales(salesList)

main()

在做了推荐的修改之后,程序现在“工作”,按预期显示当天的销售额。你知道吗

days_week=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]

def fillList(salesList):
    for day in days_week:
        user_input=int(input("Enter sales for "+ day+": " ))
        salesList.append(user_input)

def showSales(salesList):
    for num in range(len(days_week)):
        print(days_week[num],"sales: $", salesList[num])

def highestSales(salesList):
    print("Highest sales of the week was achieved on",max(salesList))

def main():
    salesList=[]
    fillList(salesList)
    showSales(salesList)
    highestSales(salesList)

main()    

不过,我想展示的是最畅销的一天。有没有可能把这两张单子加在一起?或者有没有一种简单的方法来显示用户输入最多的一天?你知道吗


Tags: inforinputindexdefdaysprintsales
3条回答

欢迎使用Stack Overflow@Jnoe。你知道吗

所以你有两个问题。你知道吗

首先:为什么要打印7次结果?

正如人们提到的,在showSales(salesList)中有两个嵌套for语句。要获得我相信您想要的行为,您可以删除内部for,并利用这样一个事实,即每个销售在销售列表中的索引与销售在周/天列表中的索引相同。要获得这个索引,可以使用list.index(value)函数。此函数返回列表中value的索引。你知道吗

所以,为了澄清,在你的例子中,你有:

你知道吗销售列表.index(75)将返回6天,周[6]是星期日,即75销售发生的那一天。你知道吗

所以你的代码应该是这样的:

def showSales(salesList):
    for sales in salesList:
        print(days_week[salesList.index(sales)],"sales: $", sales)

Second:如何引用相关日期的最大值?

你现在应该知道答案了。您可以使用以前使用的相同函数,但现在要查找销售列表中出现的最大值所在的索引。你知道吗

所以你的代码应该是这样的:

def highestSales(salesList):
    print("Highest sales of the week was achieved on", days_week[salesList.index(max(salesList))])

这意味着从salesList中得到最大值,然后得到salesList的索引,现在得到这个索引的周天数。你知道吗

小心!

因为列表.索引(value)返回您作为参数传递的值第一次出现在列表中时的索引,如果您在不同的日子有相同的销售,您可能会得到不受欢迎的行为。你知道吗

为了适应这种情况,您可以使用list comprehension,但我认为这超出了您的问题范围。你知道吗

仔细想想你的循环在做什么。根据您的代码,第一个列表中的每一项都被迭代7次,然后Python移动到下一个项并重复7次,因此每个结果都被打印7次。你知道吗

对于函数showSales,请尝试以下操作:

def showSales(salesList):
    for num in range(len(days_week)):
        print(days_week[num],"sales: $", salesList[num])

作为补充,您可以改进fillList,因为您不需要为列表创建range对象,它已经是iterable了。例如:

def fillList(salesList):
    for day in days_week:
        user_input=int(input("Enter sales for "+ day+": " ))
        salesList.append(user_input)

现在你每天只循环一次。你知道吗

showSales(saleslist)中有一个额外的for循环。我假设您只有内部for循环来获取days_week所需的索引。你知道吗

最简单的解决方法是在for循环中使用计数器,例如:

def showSales(salesList):
    i = 0;
    for sales in salesList:
        print(days_week[i],"sales: $", sales)
        i += 1

Python还为这个用例提供了一个内置函数enumerate。Enumerate返回计数器和迭代器,如下所示:

def showSales(salesList):
    for i , sales in enumerate(salesList):
        print(days_week[i],"sales: $", sales)

虽然第一种方法是跨语言通用的,并且在学习时会让您更加清晰-所以我建议显式地使用计数器。你知道吗

相关问题 更多 >