如何使用.append在循环中创建一个常量列表

问题描述 投票:-2回答:3

所以我目前的代码片段运行正常,但我想创建一个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)
python python-3.x
3个回答
0
投票
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)

PS。工资单的计算和打印可以分开以获得更好的代码。也可以使用zip函数简化循环。我不包括在内,因为它不是问题的一部分。


0
投票

您只需要定义一个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

0
投票

您需要在函数内声明一个空列表,并在循环中继续附加支付的每个值。如果你有很多行用于计算使用zip和使用pandas dataframe来存储结果,以防你以后想要将输出写入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()

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.