Как передать переменную из функции в основной код в Python - PullRequest
0 голосов
/ 09 марта 2020

Мне дали домашнее задание, чтобы написать программу Python для расчета заработной платы работника, исходя из ставки за час и количества отработанных часов. До сих пор я придумал следующий код ...

#Function
def calculatePay(rateHour,nHours):
    if nHours <= 40:
        pay = rateHour * nHours
    elif nHours < 60:
        pay = (rateHour * 40) + ((nHours - 40) * (rateHour * 1.5))
    else:
        pay = (rateHour * 40) + (20 * (rateHour * 1.5)) + ((nHours - 60) * (rateHour * 2.0))
    return pay

#Main Code
pay1 = calculatePay(30, 20)
print('You worked ', nHours, 'hours at a rate of ', ratehour, 'per hour, you will be paid $ ', pay1)
print()
pay2 = calculatePay(15.50, 50)
print('You worked ', nHours, 'hours at a rate of ', ratehour, 'per hour, you will be paid $ ', pay2)
print()
pay3 = calculatePay(11, 70.25)
print('You worked ', nHours, 'hours at a rate of ', ratehour, 'per hour, you will be paid $ ', pay3)
print()

rateHour = int(input('Enter the rate per hour: '))
nHours = int(input('Enter the number of hours worked: '))

pay4 = calculatePay(rateHour,nHours)
print('You worked ', nHours, 'hours at a rate of ', ratehour, 'per hour, you will be paid $ ', pay4)
print()

Когда я запускаю его, я получаю следующую ошибку ...

Traceback (most recent call last):
  File "C:\Users\John\Desktop\Python Programming\JohnLissandrello_Homework3.py", line 15, in <module>
    print('You worked ', nHours, 'hours at a rate of ', ratehour, 'per hour, you will be paid $ ', pay1)
NameError: name 'nHours' is not defined

Я полагаю, что это потому, что я ' я пытаюсь использовать локальные переменные rateHour и nHours в своем основном коде.

Как передать эти две переменные из моей функции в основной код, чтобы я мог выводить rateHour и nHours вместе с вычисленной оплатой?

Ответы [ 2 ]

3 голосов
/ 09 марта 2020

Вы уже передаете эти значения в функцию, т. Е. Имеете их вне функции. Проблема в том, что у них нет имени.

Предложение:

#Main Code
ratehour = 30
nHours = 20
pay1 = calculatePay(ratehour, nHours)
print('You worked ', nHours, 'hours at a rate of ', ratehour, 'per hour, you will be paid $ ', pay1)
print()

Если вы посмотрите на свой код, вы найдете много повторяющихся строк. Вы можете снова поместить это в метод:

def printPay(ratehour, nHours):
    pay = calculatePay(ratehour,nHours)
    print('You worked ', nHours, 'hours at a rate of ', ratehour, 'per hour, you will be paid $ ', pay)
    print()

и затем сделать это в al oop:

for rate, hours in  [(30,20), (15.5,50), (11,70.25)]:
    printPay(rate, hours)
1 голос
/ 09 марта 2020

@ Томас прибил ответ, но есть еще пара вопросов:

Строки 21 и 22, которые вы назвали int, но строки 14 и 17 создают впечатление, что вы хотите использовать float.

Строка 25, у вас есть ratehour, а у 21 и 24 - rateHour - Python очень требователен к капитализации

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