Gå till innehållet

Interaktivitet (terminal)

Vi låter användaren skriva svar i terminalen. Du läser med input() och skriver ut med print().

Mål för denna sida

  • Läsa och skriva i terminalen
  • Säkerställa att användaren skriver något vettigt (validering)

Enkla val med input och if

Python
1
2
3
namn = input("Vad heter du? ")
stad = input("Var bor du? ")
print(f"Hej {namn}, du bor i {stad}.")

Validera inmatning (inte tomt)

Ibland måste vi kolla att något verkligen skrevs in.

Python
1
2
3
4
namn = ""
while not namn.strip():
    namn = input("Skriv ditt namn: ")
print(f"Tack, {namn}!")

Exempel med ja/nej-fråga:

Python
1
2
3
4
5
6
7
svar = ""
while svar.lower() not in ("j", "n"):
    svar = input("Vill du fortsätta? (j/n): ")
if svar.lower() == "j":
    print("Fortsätter…")
else:
    print("Avslutar…")

Strängmetoder du ofta använder

  • strip() – tar bort mellanslag i början/slut
  • lower() – gör allt till små bokstäver
  • replace(a, b) – byter ut text a mot b
Python
1
2
3
epost = input("Ange din e-post: ")
säker = epost.replace("@", "(at)")
print("Säker e-post:", säker)

Vanliga misstag

  • Jämföra med fel fall: jämför små bokstäver med små (.lower()).
  • Tomma svar: glöm inte .strip() när du kollar om något skrevs.

Övningar

1) Fråga efter namn och adress. Skriv ut: Hej , du bor på .

2) Fråga användaren om ett lösenord tills hen skriver ett icke-tomt lösenord. Bekräfta med print.

3) Fråga efter ett ord och skriv ut ordet baklänges. Tips: ord[::-1].

4) Fråga “Vill du fortsätta? (j/n)”. Kräv giltigt svar via en while-loop och skriv sedan “Fortsätter…” eller “Avslutar…”.

5) Läs in en e-postadress och ersätt @ med (at) innan du skriver ut den.


Menyloop (vanligt mönster)

Python
val = ""
while val != "3":
    print("\nMeny:")
    print("1. Hälsa")
    print("2. Eko")
    print("3. Avsluta")
    val = input("Välj (1-3): ").strip()

    if val == "1":
        namn = input("Ditt namn: ")
        print(f"Hej {namn}!")
    elif val == "2":
        text = input("Skriv något: ")
        print("Du skrev:", text)
    elif val == "3":
        print("Hej då!")
    else:
        print("Välj 1, 2 eller 3.")

Micro-övningar: - Lägg till menyval 4: “Adderare” som läser två tal och skriver summan. - Kräv att namn inte är tomt (validera med .strip()).

Mini-projekt: Gästbok

Låt användaren skriva in namn flera gånger tills hen skriver tomt. Skriv sedan ut alla namn, ett per rad.

Python
namnlista = []
while True:
    n = input("Ange namn (Enter för att sluta): ").strip()
    if not n:
        break
    namnlista.append(n)

print("\nGästbok:")
for i, n in enumerate(namnlista, start=1):
    print(f"{i}. {n}")

Hitta felen! (5 fel)

Det finns 5 fel i menyloopen nedan (typer, skiftläge, exit-villkor).

Python
val = None
while val != 3:
    print("1. Hej")
    print("2. Eko")
    print("3. Avsluta")
    val = input("Välj: ")

    if val == 1:
        print("Hej!")
    elif val == "2":
        text = input("Skriv: ")
        print("du skrev:", text)
    elif val == "Q":
        break
    else:
        print("Fel val")

Facit

Python
# Fix 1: Använd strängar för menyval
val = ""
while val != "3":
    print("1. Hej")
    print("2. Eko")
    print("3. Avsluta")
    val = input("Välj: ").strip()

    # Fix 2–3: Jämför som sträng och normalisera vid behov
    if val == "1":
        print("Hej!")
    elif val == "2":
        text = input("Skriv: ")
        print("Du skrev:", text)  # Fix 4: konsekvent stor bokstav
    elif val.lower() == "q":      # Fix 5: tillåt q som snabbavslut
        break
    elif val == "3":
        print("Hej då!")
    else:
        print("Fel val")