Давайте разберёмся с поставленной задачей шаг за шагом. Мы создадим Excel-файл с информацией о сотрудниках и их отработанных днях, а затем проведем расчеты и стилизуем таблицу.
Шаг 1: Ввод данных
Для начала мы предложим пользователю вводить фамилии сотрудников и количество отработанных дней, пока он не введет строку «конец». Код на Python с использованием библиотеки pandas и openpyxl может выглядеть следующим образом:
import pandas as pd
# Создание пустого списка для хранения данных
data = []
while True:
entry = input("Введите фамилию сотрудника и количество отработанных дней (или 'конец' для завершения): ")
if entry.lower() == "конец":
break
try:
surname, days = entry.split() # предположим, что данные вводятся через пробел
days = int(days)
data.append({'Фамилия': surname, 'Отработанные дни': days})
except ValueError:
print("Ошибка ввода. Пожалуйста, вводите данные в формате: Фамилия Число")
# Создание DataFrame из списка
df = pd.DataFrame(data)
Шаг 2: Сортировка данных
Сортируем данные по количеству отработанных дней:
df = df.sort_values(by='Отработанные дни')
Шаг 3: Рассчёт выплаты
Теперь посчитаем общую сумму, которую компания должна выплатить. Один отработанный день стоит 4000 рублей:
total_payment = (df['Отработанные дни'] * 4000).sum()
Шаг 4: Создание Excel файла
Теперь мы создадим Excel файл с заголовком и добавим данные:
# Создаём Writer
writer = pd.ExcelWriter('Otchet.xlsx', engine='openpyxl')
# Записываем DataFrame в Excel
df.to_excel(writer, sheet_name='Otchet', index=False)
# Добавляем заголовок в Excel
workbook = writer.book
worksheet = writer.sheets['Otchet']
worksheet.cell(row=1, column=1, value='Фамилия')
worksheet.cell(row=1, column=2, value='Отработанные дни')
worksheet.cell(row=3, column=1, value='Общая сумма выплат:')
worksheet.cell(row=3, column=2, value=total_payment)
# Стилизация заголовков
for cell in worksheet["1:1"]: # Стилизация первой строки (заголовки)
cell.font = cell.font.copy(bold=True)
cell.fill = openpyxl.styles.PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")
# Сохраняем файл
writer.save()
Шаг 5: Запрос на редактирование информации
После сохранения файла предложим пользователю редактировать информацию:
edit = input("Хотите ли вы редактировать информацию? (да/нет): ")
if edit.lower() == "да":
surname_to_edit = input("Введите фамилию сотрудника, информацию о котором хотите изменить: ")
new_days = int(input("Введите новое количество отработанных дней: "))
# Обновляем данные в DataFrame
df.loc[df['Фамилия'] == surname_to_edit, 'Отработанные дни'] = new_days
# Переходим к пересчету общей суммы
total_payment = (df['Отработанные дни'] * 4000).sum()
# Обновляем файл Excel
df.to_excel(writer, sheet_name='Otchet', index=False)
worksheet.cell(row=3, column=2, value=total_payment)
writer.save()
Теперь файл «Otchet.xlsx» готов, и вы можете его открыть, чтобы увидеть результаты. Надеюсь, этот ответ поможет вам с выполнением задания! Если возникают дополнительные вопросы, задавайте, и я с радостью помогу!