Gæt tallet
INTRODUKTION
Du vil lære programmering ved at bygge et spil i et programmeringssprog kaldt Python.
Vidste du? Hjemmesider som YouTube og Instagram er bygget med Python.
Hvad du vil lave
Du vil lave et gættespil, hvor computeren vælger et tal mellem 1 og 9, og spilleren har fem chancer til at gætte tallet.
Hvad du vil lære
Udskrive tekst til skærmen
Grundlæggende string-sammenkædning (samt at bruge str() til at konvertere tal)
Gemme tekst og tal i variabler
Indsamle brugerinput (samt at bruge int() til at konvertere tal)
Simple matematikoperatorer
If/elif/else sætninger og sammenligningsoperatorer
While løkker
Hvad du har brug for
Hardware
En internet-forbundet computer
Software
Dette projekt bruger Python 3. Vi anbefaler at bruge Trinket, som giver dig mulighed for at skrive Python kode online.
Dit første Python program
Tid til din første bid af Python. Du vil få computeren til at sige hallo til alle sammen.
Skriv dette i Trinket:
print("Hello everyone")
Kør koden og se hvad der sker!
Prøv at skifte det der er inde i " symbolerne – måske ved at tilføje dit navn – og derefter køre det igen.
Tilføj nu endnu en linje under den eksisterende:
print("Hello everyone")
print("The Code, it's calling to you. Just let it in.")
Kør det igen.
Kan du se hvordan teksten (kaldt en string) fra den anden print er på en ny linje? Dette er fordi den instruktion computeren får, når du beder den om at lave print, er:
1. Læs koden i parenteserne og find ud af resultatet
2. Når du har fundet ud af hvad det siger, så `print` det ud på skærmen
3. Placer en usynlig "start en ny linje" instruktion til sidst
Hvorfor er computeren nødt til at finde ud af, hvad koden i de parenteser siger? Det er fordi computeren kan sammensætte stringen fra dele du giver den.
Prøv det!
Brug den følgende kode, men indtast dit navn imellem " symbolerne hvor der står "my name".
name = "my name"
print("Hello "+name)
print("The Code, it's calling to you. Just let it in.")
Kør nu din kode igen og se på resultatet!
Mellemrum efter "Hello"
Hvordan virker den nye kode?
Du lavede en variabel kaldt name. En variabel er ligesom en boks inde i computeren med et mærke. Du kan putte hvad som helst i den, og derefter bruge mærket til at få Python til at hente den ting, som er i boksen, og bruge det i din kode.
Så først laver du
namevariablen og gemmer"my name"i den.På den næste linje bruger du
+symbolet, efterfulgt af variablen til at vedhæfte dit navn efter hilsenen i slutningen af stringen.
Tal til brugeren
Det er rart at få computeren til at sætte dit navn på slutningen af "Hello ", men hvorfor ikke bare skrive "Hello [my name]"? Det er fordi du ikke er nødt at vide, hvad der bliver gemt i en variabel, når du skriver programmet. Du kan endda bede personen, der bruger programmet, til at fortælle hvad der skal gemmes i den.
Opdater dit Python program, så den beder brugeren om at indtaste den tekst, der skal gemmes i variablen:
name = input("What is your name?")
print("Hello "+name)
print("The Code, it's calling to you. Just let it in.")
Prøv at køre det. Du er nødt til at trykke Enter tasten, når du er færdig med at indtaste dit navn.
Prøv nu at indsamle et tal fra din bruger ved at ændre din kode til at se således ud:
name = input("What is your name?")
my_number = input("Hello "+name+", please pick a number")
print("Your number is "+my_number)
Bemærk at du kan bruge + på begge sider af en variabel!
Kør dette program, svar dets spørgsmål, og se hvad der sker.
Hvad hvis du vil tilføje endnu et tal til det tal, der er gemt i din nye variabel? Lad os prøve det.
Tilføj en linje til dit program, som vil tilføje 1 til my_number variablen:
name = input("What is your name?")
my_number = input("Hello "+name+" please pick a number")
my_number = int(my_number) + 1
print("Your number is "+str(my_number))
Hvordan virker den nye kode?
Du har lige nu taget en værdi fra en variabel, ændret det, og gemt det i den samme variabel – alt på samme linje!
Når det er sagt, hvorfor har koden int() og str() omkring my_number?
Det er fordi Python laver en forskel mellem det ‘1’ tal den bruger til matematik, og det ‘1’ tal den skriver i en sætning. Ved at putte int() omkring en variabel bliver Python fortalt at behandle den som en integer (et matematik tal), og ved at putte str() omkring den bliver det fortalt at behandle den som en text string.
Integers og strings er variabel typer, og bestemte stumper kode (som + og print) virker kun, hvis den variabel du giver dem er af den rigtige type.
Matematik i Python
Du har set hvordan man lægger sammen her, men du kan også:
- Trække fra ved at bruge
- - Gange sammen ved at bruge
* - Dividere ved at bruge
/
Sammenlign og check ting
Du kan bede Python om at sammenligne et tal med et andet tal. Dette kan være meget nyttigt i at skrive spil (f.eks. har spillerne nok penge til at købe dette kostume?).
Du gør dette ved at bruge specielle tegn:
a > bchecker omaer større endba < bchecker omaer mindre endba == bchecker omaer det samme someba != bchecker omaer forskellig fraba >= bchecker omaer større end, eller lig med,ba <= bchecker omaer mindre end, eller lig med,b
Hvorfor er der to lighedstegn sat sammen?
== bruges til at sammenligne variabler, fordi det enkelte lighedstegn allerede bruges til at tildele værdier til variabler.Du kan bruge disse sammenligninger til at lave if sætninger: kode der kun bør køres hvis (eller if på engelsk) det, der står i parenteserne (betingelsen) er sandt. I denne situation vil print sætningen inde i if sætningen kun køre, hvis værdien af my_number er større end 100;
if(my_number > 100):
print("That's a big number!")
Indrykning
Bemærk at det print der står i if sætningen er indrykket – der er lagt fire mellemrum ind før den.
Python har brug for disse mellemrum for at kunne forstå dit program!
Sæt nu denne stump kode sammen med dit program fra det sidste trin.
Rediger programmet så det ser således ud:
name = input("What is your name?")
my_number = input("Hello "+name+" please pick a number")
my_number = int(my_number)
print("Your number is "+str(my_number))
if(my_number > 100):
print("That's a big number!")
Kør det nu og prøv at indtaste forskellige tal over og under 100 for at se, hvad der sker. Hvad vil der ske, hvis du indtaster 100 præcist?
Check flere ting
Hvad hvis du vil checke om brugerens tal er stort nok, og lade dem vide, hvis det ikke er?
Du kan kombinere betingelser ved at bruge and og or. Så du kan skrive kode som dette:
if(my_number >= 20 and my_number < 30):
print("That number is in the twenties!")
Eller, for eksempel:
if(food == "Cake" or food == "Chocolate" or food == "Pie"):
print("Sounds tasty!")
Check om brugerens tal er større end 100. Derefter skal du enten lykønske brugeren med at give et tal der er stort nok, eller fortælle dem at de ikke valgte et tal der er stort nok.
Prøv dette:
name = input("What is your name?")
my_number = input("Hello "+name+" please pick a number that's bigger than 100")
my_number = int(my_number)
print("Your number is "+str(my_number))
if(my_number > 100):
print("That's a big number!")
else:
print("That number is too small!")
Koden inde i else sætningen kører, når betingelsen i parenteserne af if sætningen ikke er sandt.
Flere betingelser
Hvad nu hvis du vil fortælle brugeren, at de er tæt på – for eksempel hvis de valgte et tal over 90?
Til dette kan du bruge en elif sætning! Navnet er de engelske ord for ‘ellers’ og ‘hvis’ – ‘else’ og ‘if’ – sat sammen. Koden inde i en elif sætning kører kun når betingelsen i if sætningen ikke er sandt og betingelsen i elif sætningens parenteser er sandt.
Her er hvad du tilføjer for at få programmet til at fortælle brugeren, at de er tæt på:
elif(my_number > 90):
print("Almost there!")
Tilføj nu de linjer til resten af dit program. Bemærk at elif sætningen skal stå imellem if og else sætningerne.
name = input("What is your name?")
my_number = input("Hello "+name+" please pick a number that's bigger than 100")
my_number = int(my_number)
print("Your number is "+str(my_number))
if(my_number > 100):
print("That's a big number!")
elif(my_number > 90):
print("Almost there!")
else:
print("That number is too small!")
Bliv ved med at spørge
Du kan nu bede brugeren om at vælge et tal, checke om det har den rigtige størrelse, og hvis tallet ikke har det, fortælle brugeren at det ikke har den rigtige størrelse. Hvad hvis du har lyst til at få dit program til fortsætte, indtil det fik et svar der var den rigtige størrelse?
Du er nødt til at finde en måde at stille dit spørgsmål igen og igen, indtil du får den rigtige type svar. Den måde man gør dette i computerprogrammering er kaldt et loop. Du vil bruge et kaldt while (engelsk for ‘mens’) loopet.
Et while loop er en smule som en if sætning: den har kode inde i sig, som kun kører hvis betingelsen i parenteserne er sandt. Forskellen er at et while loop kører igen og igen, indtil dets betingelse er falsk. Du er nødt til at sikre, at der altid er en vej ud at dit while loop – ellers vil det køre for evigt! Det ser således ud:
while(my_number < 100):
my_number = input("Hello "+name+" please pick a number that's bigger than 100")
my_number = int(my_number)
Tilføj nu et while loop til dit program for at fortsætte med at spørge brugere efter et tal, indtil de giver et der er større end 100.
name = input("What is your name?")
my_number = 0
# Loop as long as "my_number" is less than 100
while(my_number < 100):
# Ask users for a number
my_number = input("Hello "+name+" please pick a number that's bigger than 100")
# Convert users' answer from a string to an integer
my_number = int(my_number)
print("Your number is "+str(my_number))
# Check if the number is bigger than 100
if(my_number > 100):
print("That's a big number!").
elif(my_number > 90):
print("Almost there! Try again!")
else:
print("That number is too small! Please try again!")
# If my_number is smaller than 100 at this point, loop again
Hvad er den ekstra tekst - er det en del af koden?
De ekstra linjer tekst der starter med et # symbol er kommentarer.
I de fleste programmeringssprog kan du skrive kommentarer i din kode. Disse er notater omkring hvad koden gør, som computeren vil ignorere. Du kan skrive dem til dig selv som påmindelser, eller til andre programmører som vil bruge din kode. I Python starter kommentarer med # og varer til slutningen af linjen.
Lav et talgættespil
Så nu har du lært omkring:
printsætninger til at tale med din brugere- variabler, som er en måde at få vores program til at huske og opdatere værdier
- strings, som er stumper af tekst
inputfor at få information fra vores bruger- matematik: hvordan man laver matematik med et tal
- integers, som er tal til at lave matematik med
ifsætninger, til at få din kode til at gøre noget baseret på en betingelsewhileloops, til at få din kode til at gentage noget, indtil en betingelse ikke længere er sandt
Du kan bruge disse værktøjer og kommandoer til at lave dette spil:
- Der er et tal (en integer), mellem 1 og 9, som programmet vælger i hemmelighed
- Spilleren har 5 gæt til at vælge tallet
- Spillet underviser spillerne i reglerne
- Spillerne bliver fortalt efter hvert gæt, om tallet er højere, lavere, eller korrekt, og hvor mange gæt de har tilbage
- Hvis spillerne gætter rigtigt, får de en speciel sejrsbesked
- Hvis spillerne gætter forkert den femte gang, er spillet slut, og de taber
Du kan spille et eksempel af spillet ved dojo.soy/py-dice.
Du mangler kun en ting til at kunne skrive dette spil: en måde at få et tilfældigt tal mellem 1 og 9. Koden til at gøre dette er lidt ud over det du har lavet, men du kan bruge det lige nu uden at forstå, hvordan det virker.
Indtast dette som den første linje i dit program:
from random import randint as dice
Med dette kan du bruge dice(1,9) de steder i din kode, hvor du vil bruge et tilfældigt tal mellem 1 og 9. For eksempel:
secret_number = dice(1,9)
Start et nyt Python program og prøv at lave spillet nu!
Husk at bruge hvad du har lært i de forrige trin af dette projekt.
Held og lykke!
Du kan holde styr på det antal gæt brugeren har brugt (eller har tilbage, afhængig af hvordan du ser på det!) ved at bruge en variabel. Du er nødt til at skrive noget kode til at ændre dets værdi efter hvert gæt.
Skriv derefter den rigtige betængelse for dit while loop til at checke, om spillerne har brugt alle deres gæt.
Prøv at bruge variabler til også at gemme nogle af de andre tal, som de to tal spillerne skal gætte imellem, og det totale antal gæt de må bruge.
Dit program vil stadig køre fint selv hvis du ikke gør dette, men at definere ting med variabler er normalt en god ide. En årsag er at det gør dit liv lettere, hvis du senere vælger at ændre disse værdier: så er den eneste ting du skal ændre den værdi du tildeler til variablerne øverst i dit program, og du behøver ikke at ændre alle de steder, hvor du bruger deres værdier.
Hvis du hænger fast, eller du er færdig, kan du checke mit svar ved dojo.soy/python-ans. Vær ikke bekymret hvis din ser anderledes ud – det betyder ikke noget, så længe at det virker.