Begynder Spil Python

Gæt tallet

Lær hvordan man kode Python til at lave et gættespil


Start

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.

  • infoHvad 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
  • infoHvad 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.


Næste

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!

  • infoMellemrummet efter "Hello"

    Du er nødt til at inkludere et mellemrum efter “Hello”, for ellers vil du bare få “Hellomy name”, fordi Python ved ikke hvordan en sætning skal struktureres!

  • infoHvordan 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 name variablen 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.


Tilbage Næste

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))
  • infoHvordan 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 /

Tilbage Næste

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 > b checker om a er større end b
  • a < b checker om a er mindre end b
  • a == b checker om a er det samme some b
  • a != b checker om a er forskellig fra b
  • a >= b checker om a er større end, eller lig med, b
  • a <= b checker om a er mindre end, eller lig med, b
  • infoHvorfor er der to lighedstegn sat sammen?

    De to lighedstegn == 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?


Tilbage Næste

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!")

Tilbage Næste

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
  • infoHvad 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.


Tilbage Næste

Lav et talgættespil

Så nu har du lært omkring:

  1. print sætninger til at tale med din brugere
  2. variabler, som er en måde at få vores program til at huske og opdatere værdier
  3. strings, som er stumper af tekst
  4. input for at få information fra vores bruger
  5. matematik: hvordan man laver matematik med et tal
  6. integers, som er tal til at lave matematik med
  7. if sætninger, til at få din kode til at gøre noget baseret på en betingelse
  8. while loops, 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:

  1. Der er et tal (en integer), mellem 1 og 9, som programmet vælger i hemmelighed
  2. Spilleren har 5 gæt til at vælge tallet
  3. Spillet underviser spillerne i reglerne
  4. Spillerne bliver fortalt efter hvert gæt, om tallet er højere, lavere, eller korrekt, og hvor mange gæt de har tilbage
  5. Hvis spillerne gætter rigtigt, får de en speciel sejrsbesked
  6. 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!

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.


Tilbage

Licence

Unless otherwise specified, everything in this repository is covered by the following licence:

Creative Commons License

PROJECT NAME by the Raspberry Pi Foundation is licenced under a Creative Commons Attribution 4.0 International License.

Based on a work at https://github.com/raspberrypilearning/project-name.

login