For at bevæge sig ud over grundlæggende funktioner i Python, skabe ordbogen se op funktion. Den Raspberry Pi gør det muligt at opbygge en funktion, der tager spillerens tekst og kontrol for eventuelle relevante svar. For at gøre dette, skal du bruge ordbøger og funktioner, og tilføje nogle nye idéer om løkker, strygere og beslutningstagning.
Funktionen er kun 12 linjer lang, men det er ganske sofistikeret. Det skal tage, hvad spilleren indtastet, og tjek hvert ord i den for at se, om ordbogen har et svar til det ord. Spilleren kan bruge mere end et ord, der er i ordbogen.
For eksempel, hvis spilleren siger "Jeg elsker popmusik," ordene kærlighed og musik kan både være i ordbogen. Alternativt kan spilleren bruge ingen ord programmet genkender, så du brug for at designe din funktion til at håndtere denne situation også.
Her er funktionen i sin helhed, så du kan se, hvordan alle bits passer sammen:
def dictionarycheck (meddelelse):
message = message.lower ()
playerwords = message.split ()
smartreplies = []
for eachword i playerwords:
hvis eachword i chatdictry:
svar = chatdictry [eachword]
smartreplies.append (svar)
hvis smartreplies:
replychosen = random.randint (0, Len (smartreplies)) - 1
retur smartreplies [replychosen]
andet:
tilbage ""
De næste to linjer indføre streng metoder. Disse er ligesom indbyggede funktioner, der er knyttet til en streng og omdanne det på nogen måde. Den nederste () metode konverterer en streng til små bogstaver. Dette er vigtigt, fordi hvis en spiller bruger store bogstaver eller blandet sag, vil de ikke matche de små ord, du har brugt i din ordbog nøgler.
Med hensyn til programmet angår, goddag og Hej er ikke det samme. Opdelingen () metode tager en streng og deler den i en liste over dets konstituerende ord. De første to linjer i vores funktion, så drej indholdet af meddelelsen variabel i et lille version af sig selv, og derefter oprette en ny liste over de ord, spilleren indtastede, kaldet playerwords.
Du kommer til at gemme eventuelle svar til spilleren på en liste kaldet smartreplies, så skaber det som en tom liste.
Det næste skridt er at oprette en løkke, der går gennem listen over ord, som spilleren indtastede igen. Når du har brugt en for-løkke, er du nødt til at arbejde dig vej gennem en liste over ord. Hver gang i ringen, den variable eachword indeholder det næste punkt på listen over ord spilleren indtastede.
Den næste linje introducerer en ny idé, den betingede udsagn, der begynder med hvis. Anvendes en betinget erklæring til, at computeren til at træffe en beslutning om, hvorvidt den skal udføre visse instruktioner. Du vil komme på tværs af det i næsten hvert program, du skriver. Her er det bliver brugt til at undgå, at programmet stopper og rapportering en fejl, hvis du forsøger at bruge en nøgle, der ikke er i ordbogen:
hvis eachword i chatdictry:
svar = chatdictry [eachword]
smartreplies.append (svar)
Den eachword variabel indeholder et af ordene spilleren indtastede, så hvis kontrollen erklæring om, hvorvidt dette ord findes i ordbogen, og kun udfører de næste to instruktioner, hvis de er.
Bemærk hvordan indrykning bruges her til at vise, hvilke kommandoer hører sammen - i dette tilfælde, som kommandoer styres af hvis erklæring. Hvis ordet i ordbogen, programmet ser det op og tilføjer den resulterende reaktion på listen smartreplies hjælp append ().
Denne proces gentages for hvert ord spilleren indtastet, men det er alt, der sker i sløjfen. Den næste linje ikke indrykket under for erklæring, så det er ikke kontrolleret af det.
Når du kommer ud af løkken, kontrollere, om listen smartreplies har noget i det, ved hjælp af blot
hvis smartreplies:
På engelsk betyder "Hvis smartreplies har indhold i det." Kommandoerne indrykket nedenunder der foretages kun, hvis nogle poster blev føjet til listen smartreplies, som kun sker, hvis et eller flere af ordene spilleren indtastede blev fundet i ordbogen.
I så fald du ønsker at returnere et af elementerne på listen smartreplies til hovedprogrammet, så vælg en tilfældigt på listen og bruge tilbagevenden til at sende det tilbage til hovedprogrammet og afslutte funktionen.
Derefter bruger ellers kommando. På almindeligt dansk betyder det ellers, og det sluttet til, hvis kommandoen. Så hvis smartreplies har indhold i det, er kommandoerne udføres for at sende tilbage en passende svar, tilfældigt valgt.
Hvornår blev fundet ingen af spillerens ord i ordbogen, og så smartreplies er tom, er vejledningen indrykket under andet kommandoen udføres i stedet. Funktionen sender en tom besked ("") tilbage til hovedprogrammet og afslutter funktionen.