Позвольте мне в предисловии сказать, что я не уверен на 100%, является ли использование словаря лучшим способом действий для этой задачи, но я считаю, что это то, что мне нужно использовать для выполнения этой задачи.
У меня есть файл .txt, отформатированный следующим образом:
first_name last_name rate hours
first_name last_name rate hours
first_name last_name rate hours
first_name last_name rate hours
Между каждым элементом есть один пробел. Каждая линия представляет человека.
Для моей программы мне нужно иметь возможность:
- распечатать всех людей сразу
- иметь возможность искать человека по имени или фамилии и распечатывать его информацию
- изменить человека (имя, фамилия, часы работы, скорость)
- удалить человека (всю его информацию)
Когда он будет напечатан, мне НЕ нужно видеть [ставка] и [часы], а вместо этого [брутто-зарплата] (брутто-зарплата = ставка * часы).
Я новичок в обработке файлов с помощью Python, поэтому моей первой попыткой было просто прочитать каждую строку из файла и распечатать ее на экране, но я столкнулся с проблемой отображения [валовой оплаты].
# 'print_emp', display only a single employee's data chosen by the user displayed as
# firstname, lastname, grosspay (on one line of output)
def print_emp():
menu_name = ' '*int(OFFSET/2) + "EMPLOYEE LOOKUP"
dotted = (OFFSET+len(menu_name))*'-'
try:
with open('employees.txt') as file:
print('{} \n{} \n{}'.format(dotted, menu_name, dotted))
emp_name = input("Employee Name: ")
print('{0:20} {1:20} {2}'.format("First Name", "Last Name", "Gross Pay"))
for line in file:
if emp_name in line:
print (line.strip())
#print("\nEmployee", emp_name, "does not exist. Try again.\n")
#break
except FileNotFoundError:
print("Error: File not found.")
# 'print_all_emp', display all employee data in format firstname, lastname,
# grosspay (on one line of output per employee)
def print_all_emps():
menu_name = ' '*int(OFFSET/2) + "EMPLOYEE LIST"
dotted = (OFFSET+len(menu_name))*'-'
try:
with open('employees.txt', 'r') as file:
print('{} \n{} \n{}'.format(dotted, menu_name, dotted))
print('{0:20} {1:20} {2}'.format("First Name", "Last Name", "Gross Pay"))
for line in file:
print(line.strip())
print(dotted)
except FileNotFoundError:
print("Error: File not found.")
Я не уверен, как мне читать мой .txt файл в словарь (если это то, что мне нужно сделать), где я назначаю каждому человеку ключ, который включает их имя, фамилию, скорость и часы, а затем умножаю rate * hours для создания брутто-зарплаты, а затем отображения этой брутто-зарплаты.
Я создам еще три функции, в которых я смогу добавлять, удалять и изменять людей в файле .txt.
ИЗМЕНИТЬ:
Я считаю, что то, что я собираюсь сделать в качестве конечной программы, выглядит примерно так:
https://en.wikibooks.org/wiki/Непрограммист%27s_Tutorial_for_Python_3/File_IO
Но без функций загрузки и сохранения...