Как мне получить программу для расчета повышения зарплаты для каждого сотрудника из файла? - PullRequest
1 голос
/ 16 марта 2019

Вот проблема, которую я пытаюсь решить для моего введения в курс программирования:

Попечители небольшого колледжа рассматривают возможность повышения заработной платы за свой факультет. члены. Они хотят повысить 7% для тех, кто зарабатывает более 50 000 долларов США, повышение на 4 процента для тех, кто зарабатывает более 60 000 долларов США, и повышение на 5,5 процента для всех другие. Однако, прежде чем сделать это, они хотят знать, сколько это будет стоить. Напиши программа, которая будет печатать повышение заработной платы для каждого преподавателя, общая сумма поднимает, а среднее поднимает. Кроме того, распечатайте общую зарплату преподавателей до и после повышение. Используйте конец файла в качестве значения часового.

Это код, который у меня есть:

def main():

    inFile = open('program7.txt', 'r')
    total = 0
    newSalaryTotal = 0
    lineRead = inFile.readline()
    while lineRead != '':
       words = lineRead.split() 
       for word in words:
           salary = float(word)
           print(format(salary, '.2f'))
       if salary > 60000.0:
           newSalary = salary * 1.04
           newSalaryTotal += newSalary
           payRaise = newSalary - salary
           total = total + salary
           print('The original salary is: ', salary)
           print('The pay raise is: ', payRaise)
       elif salary > 50000.0:
           newSalary = salary * 1.07
           newSalaryTotal += newSalary
           total = total + salary
           payRaise = newSalary - salary
           print('The original salary is: ', salary)
           print('The pay raise is: ', payRaise)
       elif salary < 50000.0:
           newSalary = salary * 1.055
           newSalaryTotal += newSalary
           total = total + salary
           payRaise = newSalary - salary
           print('The original salary is: ', salary)
           print('The pay raise is: ', payRaise)
       lineRead = inFile.readline()

    print('The total is: ', format(total, '.2f'))
    print('The new salary total is: ', format(newSalaryTotal, '.2f'))
    # Close the file.
    inFile.close()


main()`

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

Редактировать: вот вывод, который дается из кода, который я предоставил выше. Я спрашиваю, почему исходная зарплата и повышение заработной платы не печатаются для каждого значения, считываемого из файла? Я также предоставил данные в текстовом файле ниже:

Входные данные "program7.txt":

52500,00 64029,50 56000,00 50001,00 65500,00 42800,00 45000,50 68900,00 60000,00 59999,94 54120,25 64100,00 44000.50 80100.20 90000.00 41000.00 60500.50 72000.00 50000.01 50000.00 80001,75 60001,00

выход

1 Ответ

0 голосов
/ 16 марта 2019

Пока я не буду смотреть на то, как вы отображаете повышение заработной платы каждого сотрудника, поскольку ваши печатные заявления, кажется, уже это делают?Без вашего файла 'program7.txt' я не вижу, что на самом деле создается, поэтому, возможно, вы сможете отредактировать вопрос, чтобы описать ваши текущие и желаемые результаты.

Вместо этого я буду вынужден помочь вам рассчитать средние значения.Ваша проблема в некоторой степени плохо определена, так как существует несколько способов подсчета «среднего значения повышения».Чтобы проиллюстрировать это, рассмотрим следующие входные данные.

+-------+--------+-------+------------+ 
| Name  | Salary | Raise | New Salary |
+-------+--------+-------+------------+
| Bob   | 100000 |  4%   |     104000 |
| Sally |  40000 |  5.5% |      42200 |
| Dave  |  55000 |  7%   |      58850 |
+-------+--------+-------+------------+
| Total | 195000 | 10050 |     205050 |
+-------+--------+-------+------------+

Первая возможность состоит в том, чтобы рассчитать среднее повышение на человека , сложив повышение в процентах, а затем разделив на количество людей, т.е.

(4%+ 5% + 7%) / 3 = 16% / 3 = 5,333%

В качестве альтернативы можно рассчитать среднее повышение как функцию общей стоимости , сложив повышение и разделив на староезарплаты.т. е.

10050/195000 = 5,154%

Оба они являются «правильными»

Для первого метода вам потребуется добавить переменную для числа сотрудников.

Для второго метода вы можете рассчитать общее повышение, требуемое путем вычитания total из newSalaryTotal

edit: все зарплаты из ваших входных данных вводятся в одну строку.

В данный момент ваши операторы if работают только с последним словом в каждой строке.В вашем случае вы, вероятно, хотите, чтобы он срабатывал один раз за слово.Для этого вам нужно сделать отступ для оператора if, который будет включен в цикл for, следующим образом

   for word in words:
       salary = float(word)
       print(format(salary, '.2f'))
       if salary > 60000.0:
           newSalary = salary * 1.04
           newSalaryTotal += newSalary
           payRaise = newSalary - salary
           total = total + salary
           print('The original salary is: ', salary)
           print('The pay raise is: ', payRaise)
       elif salary > 50000.0:
           newSalary = salary * 1.07
           newSalaryTotal += newSalary
           total = total + salary
           payRaise = newSalary - salary
           print('The original salary is: ', salary)
           print('The pay raise is: ', payRaise)
       elif salary < 50000.0:
           newSalary = salary * 1.055
           newSalaryTotal += newSalary
           total = total + salary
           payRaise = newSalary - salary
           print('The original salary is: ', salary)
           print('The pay raise is: ', payRaise)
   lineRead = inFile.readline()

, альтернативно вы можете оставить свою программу без изменений и вместо этого отредактировать свои входные данные так, чтобы каждая зарплата была введена вновая линия, а не просто разделены пробелом.то есть как program7_2.txt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...