Hoofdletters
Je chatbot kent nu meerdere regels, maar alleen in kleine letters. Typt
iemand "Hoi", dan past de regel met "hoi" niet: voor Python zijn h en
H twee verschillende letters. Met .lower() zet je de hele zin eerst in
kleine letters.
Je gebruikt hier .lower() uit
String-methoden.
Voorspel
zin = "Hoi, hoe gaat het?"
print("hoi" in zin)
zin = zin.lower()
print(zin)
print("hoi" in zin)
Wat print dit programma?
Antwoord
False
hoi, hoe gaat het?
True
Eerst staat er Hoi met een hoofdletter in de zin, en dat is niet hetzelfde
als hoi. Na zin = zin.lower() staat de hele zin in kleine letters.
Zo werkt het
zin.lower() maakt een nieuwe tekst: dezelfde zin, in kleine letters. De
oude zin verandert er niet door. Daarom staat er zin = voor: zo bewaar je
de nieuwe tekst weer in zin.
Zet die regel bovenaan, vóór de eerste if. Dan schrijf je elk trefwoord
maar één keer, in kleine letters, en past het op hoi, Hoi en HOI.
Onderzoek
- Haal de regel
zin = zin.lower()weg. Wat antwoordt de chatbot nu? - Zet de regel terug, maar nu als
zin.lower(), zonderzin =ervoor. Wat gebeurt er? - Maak de regel weer compleet, en verander het trefwoord
"hallo"in"Hallo". Past die regel nog?
Antwoorden
Daar weet ik niets van.In de zin staanHALLOenWEERin hoofdletters, en die passen niet op"hallo"en"weer".- Hetzelfde als bij vraag 1.
zin.lower()maakt wel een zin in kleine letters, maar je bewaart hem nergens, duszinhoudt zijn hoofdletters. - Nee. Na
.lower()staat er geen enkele hoofdletter meer in de zin, dus"Hallo"past nooit. De chatbot neemt nu de regel over het weer. Schrijf je trefwoorden dus altijd in kleine letters.
Opdracht: hoofdletters maken niet uit
Maak de chatbot uit de vorige stap ongevoelig voor hoofdletters. Met de zin uit de editor wordt de uitvoer:
Ik heet Bot. En jij?
Begin klein, en breid de code stap voor stap uit:
- Draai de code. De zin vraagt naar je naam, maar de chatbot zegt
Daar weet ik niets van. - Zet boven de
ifde regelprint(zin.lower()), en draai. Je ziet de zin in kleine letters, maar het antwoord blijft hetzelfde. - Vervang die regel door
zin = zin.lower(). Nu antwoordt de chatbotIk heet Bot. En jij? - Test met
"DOEI"en met"Doei Bot".
Tip
Zegt de chatbot nog steeds Daar weet ik niets van.? Kijk of de regel met
.lower() boven de if staat. Staat hij eronder, dan komt hij te laat: de
chatbot heeft zijn antwoord dan al gekozen.
Antwoord
zin = "Wat is je NAAM?"
zin = zin.lower()
if "hoi" in zin:
print("Hallo, leuk dat je er bent.")
elif "naam" in zin:
print("Ik heet Bot. En jij?")
elif "doei" in zin:
print("Doei, tot de volgende keer.")
else:
print("Daar weet ik niets van.")
Ik heet Bot. En jij?
De regel zin = zin.lower() komt direct onder de zin, vóór de eerste if.
Door naar jouw chatbot.