我必须提取一个名为employee.txt的文件,并提取每个人工作的名称和工作时间。将该小时数放入函数中,然后让该函数返回小时数乘以每小时$ 15.25的计算结果。
这是文件中包含的数据
John Doe,40
Sally Buck,45
这就是我的代码
raw_data = []
with open("employees.txt") as fo:
for line in fo:
row = line.split()
if not row:
continue
name = row[0]
hours = row[1]
raw_data.append(name, hours)
def grosspay(hours):
pay = 0
hours = row[1]
hours * float(15.25) = int(pay)
return pay
我要求澄清读取文件并将时间正确放入函数中。我可以做剩下的事情,我只想确保自己正在做以下工作:读取文件,将其拆分为列表,然后使用列表中的数据通过函数查找我的答案。
到目前为止,我的代码没有错误。我问我读取文件,将其拆分为字符串,然后花费该小时数并在函数中使用它的过程是否正确完成。
答案 0 :(得分:4)
您可以通过简单的方式实现相同的功能。
raw_data = []
# defining the function to calculate pay
def grosspay(hours):
return "$"+str(int(hours) * float(15.25))
print(f'{"Name":30}{"Pay"}')
with open("employee.txt", "r") as f:
# reading a file line-by-line
for i in f.readlines():
# splitting name and work hours
x = i.split(",")
print(f'{x[0]:30}{grosspay(x[1])}')
# appending name and pay to raw_data
raw_data.append((x,[0],grosspay(x[1])))
输出:
Name Pay
John Doe $610.0
Sally Buck $686.25
替代pandas
import pandas as pd
# reading a file
df = pd.read_csv("dummy.txt", sep=",",names=["Name", "Hours"])
# calculating pay
df["pay"] = df.Hours.apply(lambda x: '$'+str((int(x) * float(15.25))))
# dropping Hours column
df.drop(["Hours"], axis = 1, inplace=True)
# if you want to save in file
df.to_csv("pay.csv")
print(df)
输出:
Name pay
0 John Doe $610.0
1 Sally Buck $686.25