Laboration: Upprepningar, moduler och mer felhantering

Hittills har vi avslutat programmet om användaren matat in inkorrekt data, men det är inte särskilt användbart. I den här laborationen ska vi felsäkra det program vi skrev i föregående laboration med hjälp av egna felhanteringsfunktioner som låter användaren skriva in datan igen. De funktioner vi skriver i denna laboration kommer vara bra verktyg att ha för kommande laborationer!

Innan du börjar koda

Läs på om felhantering samt om moduler.

Uppgift

I denna laboration kommer vi använda oss av en egenskriven modul som vi importerar in i vårt huvudprogram. Denna modul ska innehålla två funktioner, en som kontrollerar att inmatningen är ett heltal (int) och en som kontrollerar att inmatningen är ett flyttal (float). De två funktionerna ska ta inmatning från användaren och inte returnera förrän användaren har matat in korrekt data.

Ert huvudprogram kommer efteråt likna programmet nedan (med bättre variabelnamn):

import typed_input

def sum_arithmetic(a1, d, n):
  # Here goes your code from earlier labs

def sum_geometric(g1, q, n):
  # Here goes your code from earlier labs

def main():
  a1 = typed_input.input_float("Skriv in värdet på a1: ")
  d = typed_input.input_float("Skriv in värdet på d: ")
  n = typed_input.input_int("Skriv in värdet på n: ")
  
  arithmetic = sum_arithmetic(a1, d, n)
  
  g1 = typed_input.input_float("Skriv in värdet på a1: ")
  q = typed_input.input_float("Skriv in värdet på d: ")
  
  geometric = sum_geometric(g1, q, n)
  
  # and then your code to compare the two sums

Exempelutskrift

Data för den aritmetiska summan:
a_1: a
a_1 måste vara ett flyttal, prova igen.
a_1: 1
d: 2
Data för den geometriska summan:
g_1: 1.01
q: b
q måste vara ett flyttal, prova igen.
q: 1.10
Antal termer i summorna:
n: 0
n måste vara större än noll.
n: 10.2
n måste vara ett heltal.
n: 10
Den aritmetiska summan är störst.

Krav

Redovisning

Denna laboration ska redovisas för en lärarassistent på ett laborationstillfälle. Information om bokning av redovisningstillfälle kommer komma upp på Canvas. På redovisningen ska du kunna köra ditt program och beskriva din kod detaljerat.

Frivilliga extrauppgifter

Mer generell typhantering

Istället för att ha typed_input.input_int("Mata in heltal: ") så kan du skriva en funktion som tar typen som argument: typed_input.input_type(int, "Mata in heltal: "). På så vis kan funktionen hantera alla typer som finns.

Paketering

Läs om paketering i Python och gör din modul installerbar genom pip. Då kan andra enkelt installera din modul på sina system.