Чтение данных из файла, разбиение его на список, затем получение этих данных и помещение их в функцию - PullRequest
0 голосов
/ 23 ноября 2018

Я должен взять файл с именем 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

Прошу разъяснений по прочтению файла и правильному вводу часов в функцию.Я могу сделать все остальное, я просто хочу убедиться, что я делаю часть чтения файла, разбивая его на список, а затем использую эти данные из списка, чтобы найти мой ответ с помощью функции.

Итакпока нет ошибок с моим кодом.Я спрашиваю, правильно ли завершился мой процесс чтения файла, разбиения его на строку, а затем занял это количество часов и использовал его в функции.

1 Ответ

0 голосов
/ 23 ноября 2018

Вы можете реализовать то же самое простым способом.

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

Альтернатива с пандами

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...