Vinnaren i pepparkakshustävlingen!
  • 2
  • 3
2022-08-18, 09:16
  #25
Medlem
a-mortals avatar
Citat:
Ursprungligen postat av Methos
Om jag inte ens kan läsa din kod, hur skall TS då kunna lära sig av den?
Jag menade inte att kritisera din kod på ett negativt sätt. Det jag menade var just med tyngden "kodvimmel". Det går inte att läsa din kod.

Sedan finns inte arrayer i Python!
Sedan skulle han använda dict(), står in uppgiften.
Han måste använda en lista för att kunna räkna medelvärdet på åldern på en samling personer. Annars kan inte programmet hålla redan på hur många personer han har registrerat.

Datatyper är ett MÅSTE att lära sig i Python och det från början. Annars kommer du inte långt i detta språk.

Den bästa början är:
Kod:
def hello (name : str) ->None:
       print(f'Hello {name} ')

if __name__==__main__:
      hello('mortal')

Du är knasig. Det står inte att han skulle använda dict, "kodvimmel" är kritik, en list är en dynamisk array, man kan hålla reda på antal med ett heltal. Han lär sig inte python för att lära sig python, han lär sig python för att lära sig programmera.

"Den bästa början" är helt obegriplig. Bra jobbat.
Citera
2022-08-18, 09:32
  #26
Medlem
Citat:
Ursprungligen postat av a-mortal
Du är knasig. Det står inte att han skulle använda dict, "kodvimmel" är kritik, en list är en dynamisk array, man kan hålla reda på antal med ett heltal. Han lär sig inte python för att lära sig python, han lär sig python för att lära sig programmera.

"Den bästa början" är helt obegriplig. Bra jobbat.

Det står att han ska använda dict, eller "uppslagslista" som hans lektor kallar det. Din kod är kodvimmel, helst när man döper variabler till engelska slangord.

Python har inte array för tusende gången jag skriver det. En list är en list!
Du måste in i numpy om du skall hämtar array, för en list fungerar inte ens som en array skall fungera.

Python lär man sig för att man skall lära sig Python, vad annars?

Om du anser att en simpel funktion är obegriplig skall du nog inte hjälpa TS. Att jag har type hints är en annan femma, den åker med i min IDE. Jag använder type hints för att just hålla reda på vad fasiken jag stoppar in i funktionen.
Citera
2022-08-18, 09:47
  #27
Medlem
a-mortals avatar
Citat:
Ursprungligen postat av Methos
Det står att han ska använda dict, eller "uppslagslista" som hans lektor kallar det. Din kod är kodvimmel, helst när man döper variabler till engelska slangord.

Python har inte array för tusende gången jag skriver det. En list är en list!
Du måste in i numpy om du skall hämtar array, för en list fungerar inte ens som en array skall fungera.

Python lär man sig för att man skall lära sig Python, vad annars?

Om du anser att en simpel funktion är obegriplig skall du nog inte hjälpa TS. Att jag har type hints är en annan femma, den åker med i min IDE. Jag använder type hints för att just hålla reda på vad fasiken jag stoppar in i funktionen.
Missade det stod att man skulle använda en uppslagslista.
Python verkar inte särskilt nybörjarvänligt.
Citera
2022-08-18, 09:51
  #28
Medlem
Citat:
Ursprungligen postat av a-mortal
Missade det stod att man skulle använda en uppslagslista.
Python verkar inte särskilt nybörjarvänligt.

Python kan vara väldigt nybörjarvänligt om man tar sig tid att lära sig språket KORREKT utan dialekter av Microsoft C# och annat skit.

Lära sig datatyper såsom string, integer, list, dict. Hur man använder dem.
Lära sig funktioners uppbyggnad
Lära sig kontrollmekanismer (if)
Lära sig hur en riktig for-loop fungerar.

Så länge som man håller sig till regeln att bara använda ett variabelnamn en gång i sin kod (dvs till en sak) så klarar man sig också utan att veta hur Python använder variabler. Annars ligger man risigt till (bla. därför man använder type hints i vissa stunder).

Sedan kan man göra det mesta utan att krångla med klasser och annat.
__________________
Senast redigerad av Methos 2022-08-18 kl. 09:53.
Citera
2022-08-18, 10:11
  #29
Medlem
a-mortals avatar
Citat:
Ursprungligen postat av Methos
Python kan vara väldigt nybörjarvänligt om man tar sig tid att lära sig språket KORREKT utan dialekter av Microsoft C# och annat skit.

Lära sig datatyper såsom string, integer, list, dict. Hur man använder dem.
Lära sig funktioners uppbyggnad
Lära sig kontrollmekanismer (if)
Lära sig hur en riktig for-loop fungerar.

Så länge som man håller sig till regeln att bara använda ett variabelnamn en gång i sin kod (dvs till en sak) så klarar man sig också utan att veta hur Python använder variabler. Annars ligger man risigt till (bla. därför man använder type hints i vissa stunder).

Sedan kan man göra det mesta utan att krångla med klasser och annat.
I "Den bästa början" blandar du in miljövariabler och några konstiga strängar med f-prefix i syntaxen.
"en riktig for-loop" låter som om det finns felaktiga sätt att göra for-loopar.
Varje datatyp är en klass och du använder ett flertal metoder så då kommer du behöva förklara klasser ändå.
Citera
2022-08-18, 10:16
  #30
Medlem
Citat:
Ursprungligen postat av a-mortal
I "Den bästa början" blandar du in miljövariabler och några konstiga strängar med f-prefix i syntaxen.
"en riktig for-loop" låter som om det finns felaktiga sätt att göra for-loopar.
Varje datatyp är en klass och du använder ett flertal metoder så då kommer du behöva förklara klasser ändå.

Läse vi samma funktion?
jag använder EN sträng (förutom en miljövariabel som har typen string)
Det är en standardsträng som ser 600 gånger så bättre ut än:
"{}".format(variabel)
eller
"%s".{variabel} och annat hiskeligt som Python hade apat efter C++.

f"{}" är sjukt mycket enklare för en nybörjare.
Citera
2022-08-18, 10:21
  #31
Medlem
a-mortals avatar
Citat:
Ursprungligen postat av Methos
Läse vi samma funktion?
jag använder EN sträng (förutom en miljövariabel som har typen string)
Det är en standardsträng som ser 600 gånger så bättre ut än:
"{}".format(variabel)
eller
"%s".{variabel} och annat hiskeligt som Python hade apat efter C++.

f"{}" är sjukt mycket enklare för en nybörjare.
Om man jämför med C++ är väl vilket språk som helst nybörjarvänligt.
Citera
2022-08-18, 10:30
  #32
Medlem
Citat:
Ursprungligen postat av a-mortal
Om man jämför med C++ är väl vilket språk som helst nybörjarvänligt.

Python är ett högnivåspråk för C. Python och C är fader-son och du kan köra C i Python.
Därför hade du kvar en del korkade logiska felslut från C i Python innan Hettinger kom in och drog Van Rossum i örat. Länken går till en föreläsning av Hettinger om hur du skriver syntaxen i Python jämfört med C#.
Hettinger skrev sedan om det mesta av Python till mer enkelt och snyggare språk.
Citera
2022-08-18, 11:00
  #33
Medlem
a-mortals avatar
Citat:
Ursprungligen postat av Methos
Python är ett högnivåspråk för C. Python och C är fader-son och du kan köra C i Python.
Därför hade du kvar en del korkade logiska felslut från C i Python innan Hettinger kom in och drog Van Rossum i örat. Länken går till en föreläsning av Hettinger om hur du skriver syntaxen i Python jämfört med C#.
Hettinger skrev sedan om det mesta av Python till mer enkelt och snyggare språk.
Den föreläsningen visar att python inte är vänligt för någon.

Det enda man behöver kunna från python är detta:
Kod:
from ctypes import CDLL
CDLL("program.dll").main()
Citera
2022-08-18, 20:49
  #34
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av DontWantWar
TS

Uppgift / Projekt 2:

Introduktion

För fysiska personer betalas inkomstskatt till både stat och kommun.

Den kommunala inkomstskatten är i huvudsak proportionerlig, medan den statliga inkomstskatten har progressiva inslag, det vill säga procentsatsen ökar med ökande inkomst. Vid den första, nedre, skiktgränsen* börjar statlig inkomstskatt tas ut med 20%. Vid den andra, övre skiktgränsen tillkommer ytterligare 5% statlig skatt, ofta kallad värnskatt, vilket ger en total statlig inkomstskatt på 25% på alla inkomster över den övre skiktgränsen.

Skiktgränserna är baserade på den taxerade inkomsten minskad med grundavdrag, det vill säga den beskattningsbara förvärvsinkomsten.

För inkomståret 2017 finns det två skiktgränser*. Den nedre skiktgränsen är 438 900 kronor. På inkomster över denna gräns tas statlig inkomstskatt ut med 20 procent. Den övre skiktgränsen är 638 500 kronor. På inkomster över denna gräns tas statlig inkomstskatt ut med ytterligare 5 procentenheter (den så kallade värnskatten), det vill säga sammanlagt 25 procent.

Hur stort är grundavdraget?

För inkomståret 2017 är grundavdraget vid beräkning av kommunal och statlig skatt lägst 13 200 kronor och högst 34 500 kronor. Vid låga inkomster är grundavdraget lägst 19 000 kronor.

*Skiktgränsen = den taxerade inkomsten minskad med grundavdrag, det vill säga beskattningsbar förvärvsinkomst.

Uppgiften:


*Skapa ett program som beräknar en persons statliga inkomstskatt.

*Läs in årsinkomsten i programmet och beräkna skatten.

*För att underlätta beräkningen använd det lägsta grundavdraget (13100kr).

*OBS! Om årsinkomsten är mindre än den nedre skiktgränsen så behöver man inte betala statlig inkomstskatt.

*Programmet ska fråga, och kunna beräkna, om fler skatter ska beräknas innan det avslutas.


Du ska arbeta med Loop och if villkor

Koden måste vara väldokumenterad, kommentera din kod och berätta hur du löst uppgiften


Jag skulle lösa det så här.

Kod:
#konstanter
deductibleTax=13100
lowTax=0.3
midTax=0.5
hiTax=0.55
midTaxTrigger=438900
hiTaxTrigger=638500

continueLoop=True

while continueLoop: # huvudloop
    
    #mekanik för att inhämta bruttolön i heltal
    answerCorrect=False
    while not answerCorrect: # loop för att få korrekt bruttolön i heltal
        grossSalaryStr=input("Ange årsbruttolön i kronor: ")
        if grossSalaryStr.isnumeric():
            grossSalary=int(grossSalaryStr)
            answerCorrect=True
        else:
            print("Enbart siffror kan anges som bruttolön!")
    
    #mekanik för att beräkna skatt på bruttolönen
    
    if grossSalary<=deductibleTax:
        taxAmount=0
        taxableIncome=0
    else:
        taxableIncome=grossSalary-deductibleTax
    
    if taxableIncome<=midTaxTrigger:
        taxAmount=taxableIncome*lowTax
    else:
        taxAmount=midTaxTrigger*lowTax
    
    if taxAmount>midTaxTrigger:
        if taxableIncome<=hiTaxTrigger:
            taxAmount+=(taxableIncome-midTaxTrigger)*midTax
        else:
            taxAmount+=(hiTaxTrigger-midTaxTrigger)*midTax
            taxAmount+=(taxableIncome-hiTaxTrigger)*hiTax

    print("Skatten är "+str(taxAmount))    

    #mekanik för att fråga användaren om att fortsätta
    answerCorrect=False
    while not answerCorrect:  # loop för att få svar från användare om att fortsätta

        wantContinue=input("Vill du fortsätta räkna skatt? (j/n) ").lower()

        if wantContinue=="j":
            answerCorrect=True
        elif wantContinue=="n":
            wantContinue=False
            answerCorrect=True
            print("Du kan bara svara j (för ja), eller n (för nej)!")
        
Ej "fintestat", men fungerande
Citera
2022-08-19, 13:24
  #35
Medlem
Enterprises avatar
En synpunkt på din problembeskrivning i uppgift nr 2 är att för övrigt att den är ofullständig. Det framgår nämligen inte vilken kommunalskattesats som man ska tillämpa. Det normala är väl runt 30 % så jag använde 30 %.

Såg också att det fanns en liten mixup mellan variablerna wantContinue och continueLoop, men men...
Citera
  • 2
  • 3

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback