Inlämningsuppgift
Inlämningsuppgift 2 – Hantera användardata i ett enklare system
Bygg ett menyprogram som lagrar, söker och sorterar användare.
Vad du ska visa
Den här uppgiften bygger på det du har lärt dig i Modul 2. Du ska visa att du kan:
- Planera program med algoritmtänk.
- Använda listor och dictionaries för att lagra strukturerad data.
- Använda en tuple där det passar, till exempel när en funktion returnerar flera värden.
- Skriva funktioner för att strukturera din kod.
- Använda loopar, villkor och användarinmatning.
- Använda sökning och sortering i listor.
- Strukturera din kod så att den är läsbar och lätt att följa.
Uppgift
Skapa ett program där användaren kan hantera en lista med användare. Programmet ska ge användaren möjlighet att:
- Lägga till användare med namn, ålder och e-post.
- Söka efter användare via namn eller e-post.
- Visa alla användare sorterade alfabetiskt efter namn.
- Avsluta programmet.
Du ska använda funktioner för att dela upp din kod. Ditt program ska vara användarvänligt, tydligt kommenterat och skrivet med god struktur.
Repetera innan du börjar
- Kap 2.2 - listor och iteration.
- Kap 2.3 - sökning och sortering.
- Kap 2.4 - dictionaries och tuples.
- Kap 2.5 - planera program med algoritmtänk.
Bedömning
- Användning av listor och dictionaries.
- Att programmet är uppdelat i funktioner med tydligt syfte.
- Att menyn fungerar och att programmet är logiskt uppbyggt.
- Att du använder villkor, loopar och inmatning korrekt.
- Att du visar förståelse för sortering, sökning och datastrukturer.
- Att din kod är läsbar och kommenterad.
Checklista före inlämning
- Jag har en fungerande meny med val 1-4.
- Jag använder en lista med dictionaries för att lagra användare.
- Jag använder en tuple på ett rimligt sätt, till exempel för att returnera två värden från en funktion.
- Jag har skapat och använt minst tre egna funktioner.
- Jag har testat mitt program så att alla val fungerar.
- Jag har kommenterat min kod där det behövs.
Exempel på tuple i uppgiften
Du kan till exempel låta en funktion läsa in namn och e-post och returnera dem som en tuple:
def read_name_and_email():
name = input("Ange namn: ")
email = input("Ange e-post: ")
return name, email
Då kan du packa upp värdena när du skapar din dictionary:
name, email = read_name_and_email()
user = {"name": name, "age": age, "email": email}
Testfall
| Test | Indata | Förväntat resultat |
|---|---|---|
| Lägg till användare | Anna, 17, anna@example.com | Användaren sparas i listan. |
| Fel ålder | Anna, sjutton, anna@example.com | Programmet visar felmeddelande och kraschar inte. |
| Sök e-post | anna@example.com | Programmet hittar rätt användare. |
| Visa sorterat | Flera användare i osorterad ordning | Användarna visas alfabetiskt efter namn. |
Det här ska lämnas in
- Din Pythonfil, till exempel
main.py. - En kort lista över testfall du har provat.
- Eventuell kort kommentar om hur du använde listor, dictionaries och tuple.
Mallkod att utgå ifrån
# Funktion: Lägg till en användare
def add_user(users):
# Här ska du skriva kod för att läsa in namn, ålder och e-post.
# Skapa en dictionary med informationen och lägg till den i listan users.
pass
# Funktion: Sök efter en användare
def search_user(users):
# Be användaren skriva in ett sökord, till exempel namn eller e-post.
# Sök i listan efter matchande användare och skriv ut resultat.
pass
# Funktion: Visa alla användare
def show_users(users):
# Sortera användarna efter namn.
# Skriv ut all information om varje användare.
pass
# Huvudfunktion: Sköter meny och programflöde
def main():
users = [] # Här lagras användarna som dictionaries
while True:
print("\n1. Lägg till användare\n2. Sök användare\n3. Visa alla användare\n4. Avsluta")
choice = input("Välj ett alternativ: ")
if choice == "1":
add_user(users)
elif choice == "2":
search_user(users)
elif choice == "3":
show_users(users)
elif choice == "4":
print("Programmet avslutas.")
break
else:
print("Ogiltigt val, försök igen.")
main()
Lösningsförslag
def read_name_and_email():
name = input("Ange namn: ")
email = input("Ange e-post: ")
return name, email
def add_user(users):
name, email = read_name_and_email()
try:
age = int(input("Ange ålder: "))
except ValueError:
print("Fel: Åldern måste vara ett heltal.")
return
user = {"name": name, "age": age, "email": email}
users.append(user)
def search_user(users):
search_term = input("Sök namn eller e-post: ").lower()
found = [
user for user in users
if search_term in user["name"].lower()
or search_term in user["email"].lower()
]
for user in found:
print(f"{user['name']} ({user['age']} år) - {user['email']}")
if not found:
print("Ingen träff.")
def show_users(users):
sorted_users = sorted(users, key=lambda x: x["name"])
for user in sorted_users:
print(f"{user['name']} ({user['age']} år) - {user['email']}")
def main():
users = []
while True:
print("\n1. Lägg till användare\n2. Sök användare\n3. Visa alla\n4. Avsluta")
choice = input("Välj ett alternativ: ")
if choice == "1":
add_user(users)
elif choice == "2":
search_user(users)
elif choice == "3":
show_users(users)
elif choice == "4":
print("Programmet avslutas.")
break
else:
print("Ogiltigt val, försök igen.")
main()