所以我目前的代码片段运行正常,但我想创建一个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)
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
函数简化循环。我不包括在内,因为它不是问题的一部分。
您只需要定义一个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
您需要在函数内声明一个空列表,并在循环中继续附加支付的每个值。如果你有很多行用于计算使用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()
希望这可以帮助!