diff --git a/Exercise 2/11b.py b/Exercise 2/11b.py new file mode 100644 index 0000000..f9bfa84 --- /dev/null +++ b/Exercise 2/11b.py @@ -0,0 +1,30 @@ +from math import sqrt + +def getValues(): + while True: + values = input('Gi inn en andregradsliknings a, b og c separert med mellomrom:\n\t') + try: + splitValues = values.split(' ') + assert len(splitValues) == 3 + return { + 'a': int(splitValues[0]), + 'b': int(splitValues[1]), + 'c': int(splitValues[2]) + } + except ValueError: + print('Sørg for at alle tallene er heltall.\n') + except AssertionError: + print('Det skal bare være 3 tall.\n') + +values = getValues() +d = values['b']**2 - 4 * values['a'] * values['c'] + +expression = f'{values["a"]}x^2 + {values["b"]}x + {values["c"]}' +if d > 0: + roots = [ (-values['b'] + sqrt(d)) / (2 * values['a']), (-values['b'] - sqrt(d)) / (2 * values['a'])] + print(f'Andregradsligningen {expression} har de to reelle løsningene {roots[0]} og {roots[1]}') +elif d == 0: + root = (-values['b'] + sqrt(d)) / (2 * values['a']) + print(f'Andregradsligningen {expression} har en reell dobbelrot {root}') +else: + print(f'Andregradsligningen {expression} har to imaginære løsninger') \ No newline at end of file diff --git a/Exercise 2/9 - Skatteetaten/9a.py b/Exercise 2/9 - Skatteetaten/9a.py deleted file mode 100644 index 10efc16..0000000 --- a/Exercise 2/9 - Skatteetaten/9a.py +++ /dev/null @@ -1,30 +0,0 @@ -INFO = f"""INFO -Dette programmet besvarer om din utleie av egen bolig er skattepliktig. -Først trenger vi å vite hvor stor del av boligen du har leid ut. -Angi dette i prosent, 100 betyr hele boligen, 50 betyr halve, -20 en mindre del av boligen som f.eks. en hybel. """ - -HLINE = '----------------------------------------------------------------------' - -print(INFO) -print(HLINE) -print('DATAINNHENTING:') - -percentRented = float(input('Oppgi hvor mye av boligen som ble utleid: ')) -rentIncome = float(input('Skriv inn hva du har hatt i leieinntekt: ')) - -# Hvis du bruker minst halvparten av boligen du eier til eget bruk, beregnet etter utleieverdi, er det skattefritt å leie ut resten. -# percentRented <= 50 => hasTax = false -# Leier du ut mer enn halvparten av egen bolig, men for under 20 000 kr i året er det også skattefritt. -# rentIncome < 20000 => hasTax = false -# Leier du ut hele eller mer enn halvparten av egen bolig for over 20 000 kr i året er samtlige leieinntekter for hele året skattepliktige. -# else hasTax = true - -hasTax = percentRented > 50 and rentIncome >= 20000 -hasTaxString = 'Inntekten er skattepliktig' if hasTax else 'Inntekten er ikke skattepliktig' - -print(HLINE) -print('SKATTEBEREGNING') -print (hasTaxString) -if hasTax: - print(f'Skattepliktig beløp er {rentIncome}') diff --git a/Exercise 2/9 - Skatteetaten/9c.py b/Exercise 2/9 - Skatteetaten/9c.py new file mode 100644 index 0000000..accf923 --- /dev/null +++ b/Exercise 2/9 - Skatteetaten/9c.py @@ -0,0 +1,18 @@ +from t9a import mainBranch + +from t9b import fritidsboligBranch, secondaryHouseBranch, safeQuestion + +choices = ['egen bolig', 'sekundærbolig', 'fritidsbolig'] +choices.extend([choice.capitalize() for choice in choices]) + +choice = safeQuestion( + question='Skriv inn hustype for skatteutregning (egen bolig, sekundærbolig, fritidsbolig): ', + choices=choices +) + +if choice in ['egen bolig', 'Egen bolig']: + mainBranch() +elif choice in ['sekundærbolig', 'Sekundærbolig']: + secondaryHouseBranch() +else: + fritidsboligBranch() \ No newline at end of file diff --git a/Exercise 2/9 - Skatteetaten/t9a.py b/Exercise 2/9 - Skatteetaten/t9a.py new file mode 100644 index 0000000..762ab39 --- /dev/null +++ b/Exercise 2/9 - Skatteetaten/t9a.py @@ -0,0 +1,30 @@ +INFO = f"""INFO +Dette programmet besvarer om din utleie av egen bolig er skattepliktig. +Først trenger vi å vite hvor stor del av boligen du har leid ut. +Angi dette i prosent, 100 betyr hele boligen, 50 betyr halve, +20 en mindre del av boligen som f.eks. en hybel. """ + +HLINE = '----------------------------------------------------------------------' + +def mainBranch(): + print('DATAINNHENTING:') + + percentRented = float(input('Oppgi hvor mye av boligen som ble utleid: ')) + rentIncome = float(input('Skriv inn hva du har hatt i leieinntekt: ')) + + hasTax = percentRented > 50 and rentIncome >= 20000 + hasTaxString = 'Inntekten er skattepliktig' if hasTax else 'Inntekten er ikke skattepliktig' + + print(HLINE) + print('SKATTEBEREGNING') + print (hasTaxString) + if hasTax: + print(f'Skattepliktig beløp er {rentIncome}') + +def main(): + print(INFO) + print(HLINE) + mainBranch() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/Exercise 2/9 - Skatteetaten/t9b.py b/Exercise 2/9 - Skatteetaten/t9b.py new file mode 100644 index 0000000..08d63be --- /dev/null +++ b/Exercise 2/9 - Skatteetaten/t9b.py @@ -0,0 +1,86 @@ +INFO = """INFO +Dette programmet besvarer om din utleie en annen type bolig, +her sekundær- eller fritidsbolig, er skattepliktig. +Først trenger vi å vite om du leier ut en sekundær- eller en fritidsbolig.""" + +HLINE = '---------------------------------------------------------------------' + +FRITIDSBOLIG_INFO = """INFO +Du har valgt fritidsbolig. +Nå trenger vi først å vite om fritidsboligen(e) primært brukes til utleie eller fritid. +Deretter trenger vi å vite hvor mange fritidsbolig(er) du leier ut. +Til slutt trenger vi å vite hvor store utleieinntekter du har pr. fritidsbolig.""" + +SECONDARYHOUSE_INFO = """INFO +Du har valgt sekundærbolig. +Nå trenger vi først å vite hvor mange sekundærbolig(er) du leier ut. +Deretter trenger vi å vite hvor store utleieinntekter du har pr. sekundærbolig.""" + +def safeQuestion(question, choices): + while True: + try: + answer = input(question) + assert answer in choices + return answer + except AssertionError: + print('Skriv inn enten', ', '.join(choices[:-1]), 'eller', choices[-1]) + +def taxEvaluation(housetype, houseAmount, rentPerHouse, hasRentingPurpose=False): + hasTax = True + print() + print(HLINE) + print('SKATTEBEREGNING:') + + +def fritidsboligBranch(): + print(FRITIDSBOLIG_INFO) + print(HLINE) + print('DATAINNHENTING:') + housePurposeIsRenting = safeQuestion( + 'Skriv inn formålet med fritidsboligen(e): ', + ['Utleie', 'utleie', 'Fritid', 'fritid'] + ) in ['Utleie', 'utleie'] + houseAmount = int(input('Skriv inn antallet fritidsboliger du leier ut: ')) + rentPerHouse = int(input('Skriv inn utleieinntekten pr. fritidsbolig: ')) + print() + print(HLINE) + print('SKATTEBEREGNING') + + hasTax = housePurposeIsRenting or rentPerHouse > 10000 + if hasTax: + print('Inntekten er skattepliktig') + if not housePurposeIsRenting: + print(f'Overskytende beløp pr. fritidsbolig er {rentPerHouse - 10000}') + + housePurposeDeduction = 0 if housePurposeIsRenting else 10000 + taxedRentPerHouse = (rentPerHouse - housePurposeDeduction) * 85/100 + + print(f'Skattepliktig inntekt pr. fritidsbolig er {taxedRentPerHouse}') + print(f'Totalt skattepliktig beløp er {houseAmount * taxedRentPerHouse}') + else: + print('Inntekten er ikke skattepliktig') + +def secondaryHouseBranch(): + print(SECONDARYHOUSE_INFO) + print(HLINE) + print('DATAINNHENTING:') + houseAmount = int(input('Skriv inn antallet sekundærboliger du leier ut: ')) + rentPerHouse = int(input('Skriv inn utleieinntekten pr. sekundærbolig: ')) + +def main(): + print(INFO) + print(HLINE) + print('DATAINNHENTING:') + houseType = safeQuestion( + 'Skriv inn type annen bolig (sekundærbolig/fritidsbolig) du har leid ut: ', + ['Fritidsbolig', 'fritidsbolig', 'Sekundærbolig', 'sekundærbolig'] + ) + print() + + if houseType in ['Fritidsbolig', 'fritidsbolig']: + fritidsboligBranch() + else: + secondaryHouseBranch() + +if __name__ == "__main__": + main() \ No newline at end of file