Форум сайта python.su
И снова я со своими ошибками в коде
В общем нужно решить эту задачку(скрин прикрепил), используя функции
Я написал такой код:
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]
Прикреплённый файлы:
Screenshot_20220222-192253.jpg (27,4 KБ)
Офлайн
функция должна делать что-то одно, без всяких И. Не нужно делать функцию которая считает налог И выводит значение в консоль И еще что-нибудь там делает
представьте функцию такой коробкой с ячейками, в которые положили переменные, там произошли какие-то вычисления, манипуляции над переменными, взятые из этих ячеек и на выходе вернулось в руки новое значение, которое можно засунуть в другую коробочку и получить из нее уже другое значение.
На коробке написано для других людей то, что она делает. - 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
Офлайн