如何使用.append在循环中生成常量列表

2024-09-19 23:42:21 发布

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

所以我当前的代码片段运行正常,但是我想创建一个list,在那里我可以存储所有的payOut(变量)

所以如果:

wage = [10 , 5, 4]addedHours = [2 , 3, 2]

我想要的新变量(称之为totalWage):

totalWage = [20, 15, 9]

我希望这个totalWage变量成为下面代码中for循环的一部分。我该怎么做

    def printPayroll(self):
        totalPayroll = 0
        i = 0
        product = ""
        for y in names:

            payOut = float(wage[i]) * float(addedHours[i])
            totalPayroll += payOut
            product += ('%-10s%-10s%-0s%-0s') % (str(names[i]), str(addedHours[i]), str(payOut), "\n")

            i += 1
        finalPayroll = "Total Payroll =    $" + str(totalPayroll)

Tags: 代码selffornamesdefproductfloatlist
3条回答
def printPayroll(self):
    totalPayroll = 0
    i = 0
    product = ""
    totalWage = []

    for y in names:
        payOut = float(wage[i]) * float(addedHours[i])
        totalPayroll += payOut
        product += ('%-10s%-10s%-0s%-0s') % (str(names[i]), str(addedHours[i]), str(payOut), "\n")

        i += 1
        totalWage.append(payOut)

    finalPayroll = "Total Payroll =    $" + str(totalPayroll)
    print(totalWage)

另外,工资单的计算和打印可以分开,以便更好地编码。也可以用zip函数简化for循环。我不包括在内,因为这不是问题的一部分

您只需要定义一个totalWage列表,并为该列表中的每个项目添加wage*addedHours。此外,还可以使用enumerate获取索引和列表中的项

wage = [10 , 5, 4]
addedHours = [2 , 3, 2]
names = ['Jack', 'John', 'Joe']
def printPayroll():
    totalWage = []
    totalPayroll = 0
    i = 0
    product = ""
    for i, name in enumerate(names):

        payOut = float(wage[i]) * float(addedHours[i])
        totalWage.append(payOut)
        totalPayroll+= payOut
        product += ('%-10s%-10s%-0s%-0s') % (name, str(addedHours[i]), str(payOut), "\n")

    finalPayroll = "Total Payroll =    $" + str(totalPayroll)
    print(totalWage)
    print(product)
    print(finalPayroll)

printPayroll()
#[20.0, 15.0, 8.0]
#Jack      2         20.0
#John      3         15.0
#Joe       2         8.0

#Total Payroll =    $43.0

您需要在函数中声明一个空列表,并在循环中不断追加每个payout值。如果有许多行要使用zip&;进行计算,也可以更快地使用它;使用数据帧存储结果,以防以后将输出写入csv并存储以供将来参考。 代码如下:

wage = [10 , 5, 4]
addedHours = [2 , 3, 2]
import pandas as pd
def printPayroll():
   totalPayroll = 0
   totalWage = []
   for w, h in zip(wage, addedHours):
      payout = w*h
      totalPayroll = totalPayroll + payout
      totalWage.append(payout)
   print("Total Payroll =    $" + str(totalPayroll))
   print("Total wage:" , totalWage)
   # if names are A, B, C
   names = ["A", "B", "C"]
   print(pd.DataFrame({'name':names, 'added_hours': addedHours, 'total_wage': totalWage}))

printPayroll()

希望这有帮助

相关问题 更多 >