Update some tasks

This commit is contained in:
Oystein Kristoffer Tveit 2020-09-16 15:01:12 +02:00
parent 23d5a2ef59
commit 67a3e75cee
12 changed files with 129 additions and 132 deletions

View File

@ -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')

View File

@ -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')

View File

@ -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))

View File

@ -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,-')

View File

@ -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()

View File

@ -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()

View File

@ -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.
trenger vi først å vite hvor mange sekundærbolig(er) du leier ut. 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()

View File

@ -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()

View File

@ -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()]

View File

@ -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: