NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Mezinárodní den IT společnosti je tady! Pouze nyní můžeš získat 90 % extra kreditů při nákupu od 1199 kreditů s promo kódem AJTACI90. Tak neváhej!
Avatar
Dololo
Člen
Avatar
Dololo:14.11.2022 10:57

Ahoj,
Může někdo pomoci, jak to udělat teď? Chci tyto daně sečíst, ale teď nevím, jak to udělat.

Napište funkci compute_tax(mo­ney_list), která pro zadaný seznam finančních částek vypočítá celkovou daň. Bohatí (200 a víc peněz) platí daň 20. Ti, co nejsou bohatí, ale mají alespoň 100 peněz, platí daň 10. Ostatní daň neplatí.

print(compute_tax([50, 120, 80, 480]))

Zkusil jsem:

def compute_tax(money_list):
    tax = 0
    for money in money_list:
        if money >= 100:
            tax = 10
                if money >= 200:
            tax = 20
                if money < 0:
            tax = 0

    return tax

Chci docílit: print(compute_tax([50, 120, 80, 480]))

Chci, aby výsledek byl 30, protože tam je 120 a 480, což je celkem 30 daň

prosím pomozte

 
Odpovědět
14.11.2022 10:57
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:14.11.2022 11:23

1. Pri pocitani bezne dane musis vsechny castky nejdrive secist. Nelze scitat zaokrouhlene castky. Ale To tu asi uplne neplati, ty mas asi jen vysledke castky.
2.
"Bohatí (200 a víc peněz) platí daň 20. Ti, co nejsou bohatí, ale mají alespoň 100 peněz, platí daň 10."
Co to presne znamena? Podle toho by mela mit funkce 2 promene: celkova castka, bohaty true/false. Nebo se bohaty urcuje z celkove castky?

// js
bohaty = castka>0
dan = bohaty ? 20 : 10

Jestli se to odviji jen od castky, tak by to mohlo byt i takto

// js
dan = castka>200 ? 20 : (castka>100 ? 10 : 0);

V pythonu se ternarni operace zapisuji strasne zmatene, tak, snad je to ok. kdyztak si to prepis na if else, elseif.

dan = 20 if castka>200 else (10 if castka>100 else 0)
 
Nahoru Odpovědět
14.11.2022 11:23
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Dololo
DarkCoder:14.11.2022 12:28

Máte počítat výslednou částku kterou tvoří daň, nikoli sazby.

50: <0-100) = (50/100)*0 = 0
120: <100-200) = (120/100)*10 = 12
80: <0-100) = (80/100)*0 = 0
480: <200+) = (480/100)*20 = 96

Takže celková daň (její částka) je:
dan = 0 + 12 + 0 + 96 = 108

Takže podle částky se určí sazba, která se následně dosadit do vzorce:

dan = (castka/100)*sazba

Tím dostaneš daň pro jednu částku a abys získal celkovou daň tak csechny ryto daně sečteš.

Nahoru Odpovědět
14.11.2022 12:28
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovídá na Dololo
Matúš Olejník:14.11.2022 13:02

Tiež si myslím, že to má byť ako píše DarkCoder.

def get_tax_amount(money):
    if money >= 200:
        return 20

    if money >= 100:
        return 10

    return 0


def compute_tax(money_list):
    total_tax = 0

    for money in money_list:
        total_tax = total_tax + (money / 100 * get_tax_amount(money))

    return total_tax


print(compute_tax([50, 120, 80, 480]))
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
14.11.2022 13:02
/* I am not sure why this works but it fixes the problem */
Avatar
Dololo
Člen
Avatar
Odpovídá na Matúš Olejník
Dololo:14.11.2022 13:16

hmmmm...není to ono. Ma byt 30. tento kód vypadá takto:

 
Nahoru Odpovědět
14.11.2022 13:16
Avatar
Odpovídá na Dololo
Matúš Olejník:14.11.2022 13:17

Aha ty vieš výsledok :D Tak zmeň toto

total_tax = total_tax + (money / 100 * get_tax_amount(money))

na

total_tax = total_tax + get_tax_amount(money)
Nahoru Odpovědět
14.11.2022 13:17
/* I am not sure why this works but it fixes the problem */
Avatar
Dololo
Člen
Avatar
Odpovídá na Matúš Olejník
Dololo:14.11.2022 13:20

funguje to! Děkuji!

 
Nahoru Odpovědět
14.11.2022 13:20
Avatar
Odpovídá na Dololo
Matúš Olejník:14.11.2022 13:22

Nz, ale porozmýšlaj nad tým ;) prípadne sa pýtaj a keď sa ti bude chcieť môžeš označiť odpoveď za správnu :D

Nahoru Odpovědět
14.11.2022 13:22
/* I am not sure why this works but it fixes the problem */
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:14.11.2022 13:27

Aha. Tak, v podstate by slo pouzit, co tam mas. Asi to pocita tax spravne. Jen tam musis mit... A totez pro vsechny ostatni tax

# tax = 10
tax += 10 #nebo
tax = tax+ 10
 
Nahoru Odpovědět
14.11.2022 13:27
Avatar
DarkCoder
Člen
Avatar
DarkCoder:14.11.2022 13:40

Obchodům, které mají takto inplementovaný výpočet celkové daně, bych doporučil se velkým obloukem vyhnout. :-D

Nahoru Odpovědět
14.11.2022 13:40
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
michelein
Člen
Avatar
michelein:20.1.2023 19:09

Ahoj, hledám prosím vás nějaký postup, jak začít s kodováním v PyCharmu. Chtěla bych přesunout obrázky ze souboru do soubory a to podle názvu obrázku (čtyřkolky, mapy). Vůbec nevím, kde hledat konkrétně toto. Nemáte prosím vás tip, kde bych to mohla najít nebo jak ty obrázky trochu rozhýbat? :-) děkuji

 
Nahoru Odpovědět
20.1.2023 19:09
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.