Update some tasks
This commit is contained in:
parent
23d5a2ef59
commit
67a3e75cee
@ -1,25 +1,23 @@
|
|||||||
def getValues():
|
def getValues() -> (int, int, int):
|
||||||
while True:
|
while True:
|
||||||
values = input('Gi inn en andregradsliknings a, b og c separert med mellomrom:\n\t')
|
values = input('Gi inn en andregradsliknings a, b og c separert med mellomrom:\n\t')
|
||||||
try:
|
try:
|
||||||
splitValues = values.split(' ')
|
splitValues = values.split(' ')
|
||||||
assert len(splitValues) == 3
|
assert len(splitValues) == 3
|
||||||
return {
|
return map(int, splitValues)
|
||||||
'a': int(splitValues[0]),
|
|
||||||
'b': int(splitValues[1]),
|
|
||||||
'c': int(splitValues[2])
|
|
||||||
}
|
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print('Sørg for at alle tallene er heltall.\n')
|
print('Sørg for at alle tallene er heltall.\n')
|
||||||
except AssertionError:
|
except AssertionError:
|
||||||
print('Det skal bare være 3 tall.\n')
|
print('Det skal bare være 3 tall.\n')
|
||||||
|
|
||||||
values = getValues()
|
if __name__ == "__main__":
|
||||||
d = values['b']**2 - 4 * values['a'] * values['c']
|
a, b, c = getValues()
|
||||||
|
d = b**2 - 4 * a * c
|
||||||
|
|
||||||
if d > 0:
|
if d > 0:
|
||||||
print('Ligninga har to reelle løsninger')
|
print('Ligninga har to reelle løsninger')
|
||||||
elif d == 0:
|
elif d == 0:
|
||||||
print('Ligninga har en reell løsning')
|
print('Ligninga har en reell løsning')
|
||||||
else:
|
else:
|
||||||
print('Ligninga har to imaginære løsninger')
|
print('Ligninga har to imaginære løsninger')
|
||||||
|
@ -1,35 +1,23 @@
|
|||||||
from math import sqrt
|
from math import sqrt
|
||||||
|
|
||||||
|
from task11a import getValues
|
||||||
|
|
||||||
def getValues():
|
|
||||||
while True:
|
if __name__ == "__main__":
|
||||||
values = input(
|
a, b, c = getValues()
|
||||||
'Gi inn en andregradsliknings a, b og c separert med mellomrom:\n\t')
|
d = b**2 - 4 * a * c
|
||||||
try:
|
|
||||||
splitValues = values.split(' ')
|
expression = f'{a}x^2 + {b}x + {c}'
|
||||||
assert len(splitValues) == 3
|
if d > 0:
|
||||||
return (
|
roots = (
|
||||||
int(splitValues[0]),
|
(-b + sqrt(d)) / (2 * a),
|
||||||
int(splitValues[1]),
|
(-b - sqrt(d)) / (2 * a)
|
||||||
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')
|
|
||||||
|
|
||||||
|
|
||||||
a, b, c = getValues()
|
|
||||||
d = b**2 - 4 * a * c
|
|
||||||
|
|
||||||
expression = f'{a}x^2 + {b}x + {c}'
|
|
||||||
if d > 0:
|
|
||||||
roots = [(-b + sqrt(d)) / (2 * a), (-b - sqrt(d)) / (2 * a)]
|
|
||||||
print(
|
print(
|
||||||
f'Andregradsligningen {expression} har de to reelle løsningene {roots[0]} og {roots[1]}'
|
f'Andregradsligningen {expression} har de to reelle løsningene {roots[0]} og {roots[1]}'
|
||||||
)
|
)
|
||||||
elif d == 0:
|
elif d == 0:
|
||||||
root = (-b + sqrt(d)) / (2 * a)
|
root = (-b + sqrt(d)) / (2 * a)
|
||||||
print(f'Andregradsligningen {expression} har en reell dobbelrot {root}')
|
print(f'Andregradsligningen {expression} har en reell dobbelrot {root}')
|
||||||
else:
|
else:
|
||||||
print(f'Andregradsligningen {expression} har to imaginære løsninger')
|
print(f'Andregradsligningen {expression} har to imaginære løsninger')
|
@ -1,5 +1,14 @@
|
|||||||
def evalPrice(daysToTrip):
|
try:
|
||||||
return 'Du kan få minipris: 199,-' if (daysToTrip >= 14) else 'For sent for minipris; fullpris 440,-'
|
from common.inputChecking.typeCheck import inputTypeCheck
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
print('Sjekk README.md for hvilke flagg python trenger')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
daysToTrip = int(input('Dager til du skal reise? '))
|
def evalPrice(daysToTrip):
|
||||||
print(evalPrice(daysToTrip))
|
return 'Du kan få minipris: 199,-' if (
|
||||||
|
daysToTrip >= 14) else 'For sent for minipris; fullpris 440,-'
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
daysToTrip = inputTypeCheck('Dager til du skal reise? ', int)
|
||||||
|
print(evalPrice(daysToTrip))
|
||||||
|
@ -1,21 +1,20 @@
|
|||||||
|
try:
|
||||||
|
from common.inputChecking.boolInput import boolInput
|
||||||
|
from common.inputChecking.typeCheck import inputTypeCheck
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
print('Sjekk README.md for hvilke flagg python trenger')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
def boolInput(question):
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
choice = input(question)
|
|
||||||
assert choice in ['J', 'j', 'N', 'n']
|
|
||||||
return choice in ['J','j']
|
|
||||||
except AssertionError:
|
|
||||||
print('Skriv in J eller N\n')
|
|
||||||
|
|
||||||
def miniPriceBranch():
|
def miniPriceBranch():
|
||||||
choseMiniPrice = boolInput('Minipris 199,- kan ikke refunderes/endres\nØnskes dette (J/N)? ')
|
choseMiniPrice = boolInput('Minipris 199,- kan ikke refunderes/endres\nØnskes dette (J/N)? ')
|
||||||
print('Takk for pengene, god reise!' if choseMiniPrice else 'Da tilbyr vi fullpris: 440,-')
|
print('Takk for pengene, god reise!' if choseMiniPrice else 'Da tilbyr vi fullpris: 440,-')
|
||||||
|
|
||||||
|
|
||||||
daysToTrip = int(input('Dager til du skal reise? '))
|
if __name__ == "__main__":
|
||||||
|
daysToTrip = inputTypeCheck('Dager til du skal reise? ', int)
|
||||||
|
|
||||||
if daysToTrip >= 14:
|
if daysToTrip >= 14:
|
||||||
miniPriceBranch()
|
miniPriceBranch()
|
||||||
else:
|
else:
|
||||||
print('For sent for minipris; fullpris 440,-')
|
print('For sent for minipris; fullpris 440,-')
|
@ -1,22 +1,22 @@
|
|||||||
|
try:
|
||||||
|
from common.inputChecking.boolInput import boolInput
|
||||||
|
from common.inputChecking.typeCheck import inputTypeCheck
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
print('Sjekk README.md for hvilke flagg python trenger')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
def boolInput(question):
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
choice = input(question)
|
|
||||||
assert choice in ['J', 'j', 'N', 'n']
|
|
||||||
return choice in ['J','j']
|
|
||||||
except AssertionError:
|
|
||||||
print('Skriv in J eller N\n')
|
|
||||||
|
|
||||||
def miniPriceBranch():
|
def miniPriceBranch():
|
||||||
choseMiniPrice = boolInput('Minipris 199,- kan ikke refunderes/endres\nØnskes dette (J/N)? ')
|
choseMiniPrice = boolInput(
|
||||||
|
'Minipris 199,- kan ikke refunderes/endres\nØnskes dette (J/N)? ')
|
||||||
if choseMiniPrice:
|
if choseMiniPrice:
|
||||||
print('Takk for pengene, god reise!')
|
print('Takk for pengene, god reise!')
|
||||||
else:
|
else:
|
||||||
normalBranch()
|
normalBranch()
|
||||||
|
|
||||||
|
|
||||||
def evalDiscountPercent():
|
def evalDiscountPercent():
|
||||||
age = int(input('Skriv inn din alder: '))
|
age = inputTypeCheck('Skriv inn din alder: ', int)
|
||||||
if age < 16:
|
if age < 16:
|
||||||
return 50
|
return 50
|
||||||
elif age >= 60:
|
elif age >= 60:
|
||||||
@ -25,14 +25,16 @@ def evalDiscountPercent():
|
|||||||
hasSpecialSocialStatus = boolInput('Er du student eller militær (J/N)?')
|
hasSpecialSocialStatus = boolInput('Er du student eller militær (J/N)?')
|
||||||
return 25 if hasSpecialSocialStatus else 0
|
return 25 if hasSpecialSocialStatus else 0
|
||||||
|
|
||||||
|
|
||||||
def normalBranch():
|
def normalBranch():
|
||||||
discountPercent = evalDiscountPercent()
|
discountPercent = evalDiscountPercent()
|
||||||
print(f'Prisen på biletten blir: {440 - 440 * discountPercent/100}')
|
print(f'Prisen på biletten blir: {440 - 440 * discountPercent/100}')
|
||||||
|
|
||||||
|
|
||||||
daysToTrip = int(input('Dager til du skal reise? '))
|
if __name__ == "__main__":
|
||||||
|
daysToTrip = inputTypeCheck('Dager til du skal reise? ', int)
|
||||||
|
|
||||||
if daysToTrip >= 14:
|
if daysToTrip >= 14:
|
||||||
miniPriceBranch()
|
miniPriceBranch()
|
||||||
else:
|
else:
|
||||||
normalBranch()
|
normalBranch()
|
@ -1,3 +1,9 @@
|
|||||||
|
try:
|
||||||
|
from common.inputChecking.typeCheck import inputTypeCheck
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
print('Sjekk README.md for hvilke flagg python trenger')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
INFO = f"""INFO
|
INFO = f"""INFO
|
||||||
Dette programmet besvarer om din utleie av egen bolig er skattepliktig.
|
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.
|
Først trenger vi å vite hvor stor del av boligen du har leid ut.
|
||||||
@ -9,8 +15,8 @@ HLINE = '----------------------------------------------------------------------'
|
|||||||
def mainBranch():
|
def mainBranch():
|
||||||
print('DATAINNHENTING:')
|
print('DATAINNHENTING:')
|
||||||
|
|
||||||
percentRented = float(input('Oppgi hvor mye av boligen som ble utleid: '))
|
percentRented = inputTypeCheck('Oppgi hvor mye av boligen som ble utleid: ', float)
|
||||||
rentIncome = float(input('Skriv inn hva du har hatt i leieinntekt: '))
|
rentIncome = inputTypeCheck('Skriv inn hva du har hatt i leieinntekt: ', float)
|
||||||
|
|
||||||
hasTax = percentRented > 50 and rentIncome >= 20000
|
hasTax = percentRented > 50 and rentIncome >= 20000
|
||||||
hasTaxString = 'Inntekten er skattepliktig' if hasTax else 'Inntekten er ikke skattepliktig'
|
hasTaxString = 'Inntekten er skattepliktig' if hasTax else 'Inntekten er ikke skattepliktig'
|
||||||
@ -21,10 +27,8 @@ def mainBranch():
|
|||||||
if hasTax:
|
if hasTax:
|
||||||
print(f'Skattepliktig beløp er {rentIncome}')
|
print(f'Skattepliktig beløp er {rentIncome}')
|
||||||
|
|
||||||
def main():
|
|
||||||
|
if __name__ == "__main__":
|
||||||
print(INFO)
|
print(INFO)
|
||||||
print(HLINE)
|
print(HLINE)
|
||||||
mainBranch()
|
mainBranch()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
@ -1,3 +1,10 @@
|
|||||||
|
try:
|
||||||
|
from common.inputChecking.choiceInput import choiceInput
|
||||||
|
from common.inputChecking.typeCheck import inputTypeCheck
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
print('Sjekk README.md for hvilke flagg python trenger')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
INFO = """INFO
|
INFO = """INFO
|
||||||
Dette programmet besvarer om din utleie en annen type bolig,
|
Dette programmet besvarer om din utleie en annen type bolig,
|
||||||
her sekundær- eller fritidsbolig, er skattepliktig.
|
her sekundær- eller fritidsbolig, er skattepliktig.
|
||||||
@ -16,32 +23,17 @@ Du har valgt sekundærbolig.
|
|||||||
Nå trenger vi først å vite hvor mange sekundærbolig(er) du leier ut.
|
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."""
|
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():
|
def fritidsboligBranch():
|
||||||
print(FRITIDSBOLIG_INFO)
|
print(FRITIDSBOLIG_INFO)
|
||||||
print(HLINE)
|
print(HLINE)
|
||||||
print('DATAINNHENTING:')
|
print('DATAINNHENTING:')
|
||||||
housePurposeIsRenting = safeQuestion(
|
housePurposeIsRenting = choiceInput(
|
||||||
'Skriv inn formålet med fritidsboligen(e): ',
|
prompt='Skriv inn formålet med fritidsboligen(e): ',
|
||||||
['Utleie', 'utleie', 'Fritid', 'fritid']
|
choices=['utleie', 'fritid']
|
||||||
) in ['Utleie', 'utleie']
|
) == 'utleie'
|
||||||
houseAmount = int(input('Skriv inn antallet fritidsboliger du leier ut: '))
|
houseAmount = inputTypeCheck('Skriv inn antallet fritidsboliger du leier ut: ', int)
|
||||||
rentPerHouse = int(input('Skriv inn utleieinntekten pr. fritidsbolig: '))
|
rentPerHouse = inputTypeCheck('Skriv inn utleieinntekten pr. fritidsbolig: ', int)
|
||||||
print()
|
print()
|
||||||
print(HLINE)
|
print(HLINE)
|
||||||
print('SKATTEBEREGNING')
|
print('SKATTEBEREGNING')
|
||||||
@ -64,23 +56,21 @@ def secondaryHouseBranch():
|
|||||||
print(SECONDARYHOUSE_INFO)
|
print(SECONDARYHOUSE_INFO)
|
||||||
print(HLINE)
|
print(HLINE)
|
||||||
print('DATAINNHENTING:')
|
print('DATAINNHENTING:')
|
||||||
houseAmount = int(input('Skriv inn antallet sekundærboliger du leier ut: '))
|
houseAmount = inputTypeCheck('Skriv inn antallet sekundærboliger du leier ut: ', int)
|
||||||
rentPerHouse = int(input('Skriv inn utleieinntekten pr. sekundærbolig: '))
|
rentPerHouse = inputTypeCheck('Skriv inn utleieinntekten pr. sekundærbolig: ', int)
|
||||||
|
|
||||||
def main():
|
|
||||||
|
if __name__ == "__main__":
|
||||||
print(INFO)
|
print(INFO)
|
||||||
print(HLINE)
|
print(HLINE)
|
||||||
print('DATAINNHENTING:')
|
print('DATAINNHENTING:')
|
||||||
houseType = safeQuestion(
|
houseType = choiceInput(
|
||||||
'Skriv inn type annen bolig (sekundærbolig/fritidsbolig) du har leid ut: ',
|
prompt='Skriv inn type annen bolig (sekundærbolig/fritidsbolig) du har leid ut: ',
|
||||||
['Fritidsbolig', 'fritidsbolig', 'Sekundærbolig', 'sekundærbolig']
|
choices=['fritidsbolig','sekundærbolig']
|
||||||
)
|
)
|
||||||
print()
|
print()
|
||||||
|
|
||||||
if houseType in ['Fritidsbolig', 'fritidsbolig']:
|
if houseType == 'fritidsbolig':
|
||||||
fritidsboligBranch()
|
fritidsboligBranch()
|
||||||
else:
|
else:
|
||||||
secondaryHouseBranch()
|
secondaryHouseBranch()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
@ -1,17 +1,22 @@
|
|||||||
|
try:
|
||||||
|
from common.inputChecking.choiceInput import choiceInput
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
print('Sjekk README.md for hvilke flagg python trenger')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
from task9a import mainBranch
|
from task9a import mainBranch
|
||||||
from task9b import fritidsboligBranch, secondaryHouseBranch, safeQuestion
|
from task9b import fritidsboligBranch, secondaryHouseBranch
|
||||||
|
|
||||||
choices = ['egen bolig', 'sekundærbolig', 'fritidsbolig']
|
if __name__ == "__main__":
|
||||||
choices.extend([choice.capitalize() for choice in choices])
|
choices = ['egen bolig', 'sekundærbolig', 'fritidsbolig']
|
||||||
|
|
||||||
choice = safeQuestion(
|
choice = choiceInput(
|
||||||
question=
|
prompt=f'Skriv inn hustype for skatteutregning ({", ".join(choices)}): ',
|
||||||
'Skriv inn hustype for skatteutregning (egen bolig, sekundærbolig, fritidsbolig): ',
|
|
||||||
choices=choices)
|
choices=choices)
|
||||||
|
|
||||||
if choice in ['egen bolig', 'Egen bolig']:
|
if choice == 'egen bolig':
|
||||||
mainBranch()
|
mainBranch()
|
||||||
elif choice in ['sekundærbolig', 'Sekundærbolig']:
|
elif choice == 'sekundærbolig':
|
||||||
secondaryHouseBranch()
|
secondaryHouseBranch()
|
||||||
else:
|
else:
|
||||||
fritidsboligBranch()
|
fritidsboligBranch()
|
@ -5,7 +5,7 @@ def boolInput(question, error='Skriv in J eller N\n', yesNoLetters=('j', 'n')):
|
|||||||
Parameters: \\
|
Parameters: \\
|
||||||
prompt (str): The prompt asking the user for input \\
|
prompt (str): The prompt asking the user for input \\
|
||||||
error? (str): The message to be printed on parsing error \\
|
error? (str): The message to be printed on parsing error \\
|
||||||
yesNoLetters? ((str,str)): The letters to be used for representing yes and no in low caps
|
yesNoLetters? ((str,str)): The letters to be used for representing yes and no in lower caps
|
||||||
"""
|
"""
|
||||||
yesLetters = [yesNoLetters[0], yesNoLetters[0].capitalize()]
|
yesLetters = [yesNoLetters[0], yesNoLetters[0].capitalize()]
|
||||||
noLetters = [yesNoLetters[1], yesNoLetters[1].capitalize()]
|
noLetters = [yesNoLetters[1], yesNoLetters[1].capitalize()]
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
def safeQuestion(prompt, choices):
|
def choiceInput(prompt, choices):
|
||||||
"""
|
"""
|
||||||
Prompts the user to make a choice and asserts that the choice is valid.
|
Prompts the user to make a choice and asserts that the choice is valid.
|
||||||
|
|
||||||
Parameters: \\
|
Parameters: \\
|
||||||
prompt (str): The prompt asking the user for input \\
|
prompt (str): The prompt asking the user for input \\
|
||||||
choices ([str]): The choices that the user can choose (in low caps)
|
choices ([str]): The choices that the user can choose (in lower caps)
|
||||||
|
|
||||||
|
Returns the choice in lower caps
|
||||||
"""
|
"""
|
||||||
allChoices = choices + [choice.capitalize() for choice in choices]
|
allChoices = choices + [choice.capitalize() for choice in choices]
|
||||||
while True:
|
while True:
|
||||||
|
Loading…
Reference in New Issue
Block a user