Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 22, 2022 18:29:16

Laykod
Зарегистрирован: 2021-12-28
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите новичку

И снова я со своими ошибками в коде

В общем нужно решить эту задачку(скрин прикрепил), используя функции
Я написал такой код:

FED_NALOG=0.05
REG_NALOG=0.025

def main():
a=input('Были продажи?')
prodaza(a)

def prodaza(a):
while a=='Да':
prodaza+=a
a=input('Были ли ещё продажи?')
fed_nalog(prodaza)

def fed_nalog(prodaza):
fed_nalog=prodaza*FED_NALOG
print('Федеральный налог: ', fed_nalog)
reg_nalog(prodaza)

def reg_nalog(prodaza):
reg_nalog=prodaza*REG_NALOG
print('Региональный налог: ', reg_nalog)
itog_nalog(fed_nalog, reg_nalog)

def itog_nalog(a, b):
itog_nalog=a+b
print('Итоговый налог: ', itog_nalog)
itog_dohod(itog_nalog)

def itog_dohod(itog_nalog):
itog_dohod=prodaza-itog_nalog
print('Ваш доход: ', itog_dohod)

main()

А вот ошибка:
Были продажи?Да
Traceback (most recent call last):
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in <module>
start(fakepyfile,mainpyfile)
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start
exec(open(mainpyfile).read(), __main__.__dict__)
File "<string>", line 33, in <module>
File "<string>", line 6, in main
File "<string>", line 10, in prodaza
UnboundLocalError: local variable 'prodaza' referenced before assignment

[Program finished]

Прикреплённый файлы:
attachment Screenshot_20220222-192253.jpg (27,4 KБ)

Офлайн

#2 Фев. 22, 2022 19:51:40

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1360
Репутация: +  119  -
Профиль   Отправить e-mail  

Помогите новичку

функция должна делать что-то одно, без всяких И. Не нужно делать функцию которая считает налог И выводит значение в консоль И еще что-нибудь там делает

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

На коробке написано для других людей то, что она делает. - calculate вычисляет, - get - получает что-то, set - устанавливает, find - ищет, is_valid проверяет валидность и тд..тп.Чтобы по названию уже понимать что делает эта функция.

Так вышло, что английский язык более удобен в описании переменных, хотя наверное на русском тоже можно было придумать какие-то короткие емкие названия для описания переменных как соглашение, но пока так как везде. Используйте переводчик

 def get_buy_value():
    while True:
        try:
            return float(input('величина покупки >>> '))
        except:
            print('bad')
            continue
def tax_calculate(tax_percent):
    def calculate(buy_value):
        return buy_value * (tax_percent / 100)
    return calculate
fed_tax = tax_calculate(5)
reg_tax = tax_calculate(2.5)
if __name__ == '__main__':
    buy_value = get_buy_value()
    f_tax = fed_tax(buy_value)
    r_tax = reg_tax(buy_value)
    total_tax = f_tax + r_tax
    total_buy = buy_value + total_tax
    text_out = f'\n========= чек ============\n' \
               f'сумма покупки: {buy_value}\n' \
               f'федеральный налог: {f_tax}\n' \
               f'региональный налог: {r_tax}\n' \
               f'общий налог: {total_tax}\n' \
               f'итоговая сумма: {total_buy}'
    print(text_out)

вывод
величина покупки >>> 100

========= чек ============
сумма покупки: 100.0
федеральный налог: 5.0
региональный налог: 2.5
общий налог: 7.5
итоговая сумма: 107.5

Process finished with exit code 0

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version