я получаю эту ошибку UnboundLocalError: локальная переменная «оплата», на которую ссылаются перед назначением в строке 9, каждый раз, пожалуйста

#python

Вопрос:

#Пожалуйста, помогите мне

 def computepay(h, r):
    if h>40:
        reg=40*r
        otp=(h-40.0)*1.5*r
    else:
        pay = h*r
    return pay

hrs = input("Enter Hours:")
rate= input('enter rate per hour: ')
fh = float (hrs)
fr = float (rate)
p = computepay(fh, fr)
print("Pay", p)
 

Комментарии:

1. исправьте свой код, пожалуйста, он отображается неправильно

Ответ №1:

Если я правильно понимаю ваш код, ваш код вставлен неправильно, если h > 40 pay не присвоено никакого значения, только pay присваивается значение в остальном, вот почему вы получаете эту ошибку

Ответ №2:

Чтобы ответить на вопрос о том, на что ссылается «оплата» перед назначением, ваш код проходит через часть инструкции if в строке, где вы определяете computepay(). Вы никогда не добавляете reg и otp в переменную под названием pay, что, я полагаю, вы пытаетесь сделать.

Кроме того, в вашем заявлении else вы делаете pay = hr, которого не существует, поскольку python будет анализировать hr как одну переменную, а не две, обязательно используйте звездочки для правильного анализа всего.

Как бы я набрал определение computepay (), оно выглядело бы следующим образом:

 def computepay(h, r):
    if h>40:
        reg=40*r
        otp=(h-40.0)*1.5*r
        pay=reg otp
    else: pay = h*r
    return pay
 

Однако основная функция ниже возврата оплаты-это штраф. Это должно работать идеально, удачи!