Kalo te përmbajtja

12 min lexim

American Corners
Njësi referencë e gatshme për edukatorë

Grafika me Turtle dhe variablat

Python, dhe një robot që quhet Turtle

Python është një gjuhë programimi. Kjo do të thotë thjesht se është një mënyrë për t'i dhënë kompjuterit udhëzime të qarta, hap pas hapi. Python përdoret në shumë fusha, mes tyre inteligjenca artificiale, robotika, përpunimi i të dhënave dhe mësimi i makinave, pjesërisht sepse lexohet më afër anglishtes së thjeshtë sesa shumica e gjuhëve të tjera.

Mënyra më miqësore për të nisur është me Turtle. Mendoje Turtle si një robot të vogël që jeton në ekran. Ai lëviz dhe vizaton një vijë ndërsa ecën, dhe ti e drejton me Python. Ky robot jeton në një botë të sheshtë, dydimensionale: nis në mes të ekranit dhe nis i kthyer nga e djathta. Çdo udhëzim që i jep varet nga vendi ku ndodhet dhe nga ana nga e cila është kthyer në atë çast.

Për pjesën tjetër të këtij leksioni, mbaje ndër mend këtë robot. Gjithçka që shkruan është në të vërtetë thjesht ti duke i thënë atij ku të shkojë.

Nis me diçka që punon

Para çdo shpjegimi, ja një program i plotë. Katër rreshta të dobishëm, dhe vizaton një vijë blu 80 pikselë të gjatë.

import turtle

pen = turtle.Turtle()
pen.color("blue")
pen.forward(80)
turtle.done()

Kjo është e gjithë struktura e një programi me Turtle: ngarko mjetet, krijo breshkën, thuaji të lëvizë, mbyll. Gjithçka më poshtë shpjegon një program që tashmë e ke parë duke punuar.

Këshillë

Çdo program në këtë faqe mund ta lexosh, ta parashikosh dhe ta ndjekësh nga telefoni. Për ta ekzekutuar vërtet Python-in duhet një kompjuter ku ke leje ta instalosh. Nëse ke vetëm telefon, vazhdo: parashikimi i asaj që do të vizatojë programi është aftësia për të cilën bëhet fjalë në këtë mësim.

Si ta lëvizësh Turtle

Një program me Turtle ndjek gjithmonë të njëjtat katër hapa: importo veglat e turtle, krijo një turtle për ta drejtuar, vizato me të, pastaj mbylle. Ja kodi fillestar që bën dy hapat e parë dhe hedh një hap të vogël përpara.

import turtle

wn = turtle.Screen()
wn.bgcolor("light green")
wn.title("Turtle")
skk = turtle.Turtle()
skk.forward(100)
turtle.done()

Rreshti i parë ngarkon të gjitha veçoritë e Turtle. Tre rreshtat pasues hapin një dritare vizatimi, i ngjyrosin sfondin dhe i vënë një titull. Pastaj skk = turtle.Turtle() krijon vetë robotin dhe e emërton skk. Mund ta quash si të duash. Rreshti skk.forward(100) e lëviz atë 100 piksela në drejtimin nga i cili është kthyer, dhe turtle.done() e mban dritaren hapur që të shohësh punën tënde.

Sapo ke një turtle, një grusht komandash mbulojnë shumicën e asaj që të duhet. Në çdo rresht më poshtë, skk është thjesht emri që i vumë turtle-s tonë.

KomandaÇfarë bënShembull
forward(sasi)ec përpara aq pikselaskk.forward(100)
backward(sasi)ec prapa pa u kthyerskk.backward(200)
right(kënd)kthehu nga e djathta në vendskk.right(90)
left(kënd)kthehu nga e majta në vendskk.left(120)
goto(x, y)kërce te një pozicion i saktëskk.goto(-140, 140)
penup()ngri lapsin që lëvizja të mos lërë vijëskk.penup()
pendown()ule lapsin sërish për të vizatuarskk.pendown()
shape(emri)ndrysho shenjën, si "turtle" ose "arrow"skk.shape("turtle")
color(emri)ndrysho ngjyrën e lapsitskk.color("blue")

Për të vizatuar një trekëndësh, përsërit të njëjtën dyshe lëvizjesh tri herë: ec përpara, pastaj kthehu. Një trekëndësh ka tri kthesa të jashtme të barabarta prej 120 gradësh, kështu që modeli është ec përpara, kthehu majtas 120, tri herë radhazi.

import turtle

skk = turtle.Turtle()
skk.forward(100)
skk.left(120)
skk.forward(100)
skk.left(120)
skk.forward(100)
skk.left(120)
turtle.done()

Katrori është e njëjta ide me katër brinjë dhe katër kthesa të drejta prej 90 gradësh: ec përpara, kthehu majtas 90, katër herë radhazi. Vër re sa shumë prej këtij kodi është kopjuar dhe ngjitur. Pikërisht kjo përsëritje është ajo që do ta rregullojnë ciklet në një leksion të mëvonshëm.

Variablat: një enë me emër

Një variabël është një enë me emër që mban një copë informacion. Çdo variabël ka dy pjesë: një emër, që t'i referohesh, dhe një vlerë, të dhënat që mban për momentin. E krijon duke shkruar emrin, një shenjë barazimi, pastaj vlerën.

age = 15
message = "Happy birthday!"

Këtu age është një numër dhe message është një varg (anglisht: string), pra tekst në programim. Teksti shkruhet brenda thonjëzave, që Python ta dallojë nga një emër ose udhëzim. Variablat mund të mbajnë më shumë se numra dhe fjalë: tashmë ke ruajtur një pa e vënë re, sepse skk = turtle.Turtle() e fut turtle-n tënde në një variabël të quajtur skk.

Vlera brenda enës mund të ndryshojë ndërsa programi punon. Në ditëlindjen tënde mund të duash të kalosh nga 15 në 16. Mund ta vendosësh vlerën e re drejtpërdrejt, ose mund ta ndërtosh nga e vjetra:

age = 15
age = age + 1

Lexoje rreshtin e dytë nga e djathta: Python fillimisht llogarit age + 1, që bën 16, dhe vetëm pastaj e ruan atë rezultat sërish te age. Ky model, të marrësh vlerën e tanishme dhe të vësh një të përditësuar sërish, del vazhdimisht, kështu që ia vlen ta kuptosh mirë që tani.

Këshillë

Kur sheh x = x + 1, mos e lexo si pohim se diçka është e barabartë me vetveten plus një. Lexo më parë anën e djathtë, gjej përgjigjen, pastaj lëre shigjetën të tregojë majtas: vlera e re zë vendin e së vjetrës në enë.

Një shembull i punuar: çfarë vizaton Turtle?

Meqë vlera e një variabli mund të ndryshojë, nuk mund ta dish çfarë bën një program thjesht duke lexuar emrat. Duhet të ndjekësh çdo vlerë ndërsa ecën. Provoje këtë enigmë me dorë para se ta ekzekutosh. Turtle-ja nis në qendër, në pozicionin (0, 0), e kthyer nga e djathta.

import turtle

t = turtle.Turtle()
length = 100
angle = 90
t.forward(length)
angle = angle + 90
t.left(angle)
t.forward(length)
t.forward(length)
length = length - length
t.forward(length)
t.right(angle)
length = 100
t.forward(length * 2)

Ndiqi vlerat hap pas hapi. length është 100 dhe angle është 90. t.forward(length) i parë lëviz 100 nga e djathta, pra turtle-ja tani është te (100, 0). Më pas, angle = angle + 90 e bën angle të bëhet 180. Kthesa t.left(180) e rrotullon turtle-n gjysmë rrethi, pra tani është kthyer nga e majta. Dy thirrjet pasuese t.forward(length) e lëvizin 100, pastaj edhe 100, mbrapsht te (0, 0) dhe më tej te (-100, 0).

Pastaj length = length - length e vendos length në 0, kështu që t.forward(0) që vjen nuk bën fare asgjë. Kthesa t.right(180) e kthen turtle-n sërish nga e djathta. Në fund length rivendoset në 100, dhe t.forward(length * 2) lëviz 200, nga (-100, 0) gjithë rrugës deri te (100, 0).

Rezultati është një vijë e vetme e drejtë horizontale, e vizatuar tutje-tëhu mes (-100, 0) dhe (100, 0). As trekëndësh, as katror, thjesht një vijë. Mësimi është se vlera e së njëjtës variabël ndryshoi disa herë; vetëm gjurmimi me kujdes i vlerave zbulon formën.

Kur prishet: si të lexosh një gabim

Programet dështojnë në mënyra të zakonshme, dhe mesazhi i gabimit zakonisht e tregon problemin. Lexo këtë version dhe vendos se çfarë shkon keq para se të vazhdosh.

import turtle

pen = turtle.Turtle()
pen.forward(distance)
turtle.done()

Python ndalon në rreshtin e katërt dhe njofton:

NameError: name 'distance' is not defined

Këshillë

distance nuk mori kurrë një vlerë, ndaj nuk ekziston asnjë enë me atë emër për të lexuar. Python nuk është i hutuar për vizatimin, është i hutuar për një emër. Zgjidhja është një rresht: vendos distance = 80 sipër tij. Kur ndeshesh me një gabim, lexo së pari rreshtin e fundit, gjej numrin e rreshtit që përmend, pastaj pyet cilin emër ose vlerë nuk e gjeti dot.

Asgjë këtu nuk kërkon kompjuter. Të emërtosh rreshtin që dështoi, të thuash pse dështoi dhe të propozosh zgjidhjen më të vogël është i njëjti arsyetim që do të përdorje me Python-in hapur para teje.

Shko më tej, nëse do ta ekzekutosh

Do t'i shohësh këto programe duke vizatuar në kompjuterin tënd? Një shtojcë opsionale të udhëheq në instalimin e Python dhe IDLE, në ekzekutimin e skedarit bazë, në prishjen e tij me qëllim dhe në korrigjimin e tij. Kërkon një kompjuter ku ke leje të instalosh programe, dhe nuk është e nevojshme për asgjë më tej në kurs.

Shko më tej: Python i vërtetë në kompjuterin tënd

Provo veten

  1. Një turtle nis në mes të ekranit e kthyer nga e djathta. Cila komandë e vetme e kthen atë të shohë drejt lart, dhe me sa gradë?
  2. Me fjalët e tua, cilat janë dy pjesët që ka çdo variabël, dhe për çfarë shërben secila?
  3. Nëse një variabël mban count = 4 dhe rreshti pasues është count = count + 3, çfarë vlere mban count më pas, dhe pse e lexon më parë anën e djathtë?
Udhëzim për edukatorin · 60 min

Përgatitja

  • Shkarko skedarin Python që punon dhe atë me gabim dhe mbaji lokalisht
  • Kushti për variantin 60-minutësh: para ardhjes së nxënësve kontrollo që Python 3, IDLE, Turtle dhe të dy skedarët bazë punojnë në pajisje
  • Printo një fletë për gjurmimin dhe korrigjimin e kodit për çdo nxënës ose dyshe

Materialet

  • Një kompjuter për çdo nxënës ose dyshe
  • Python 3 me IDLE dhe Turtle
  • Skedari bazë dhe skedari me gabim
  • Fleta e ndjekjes/korrigjimit dhe stilolapsa
  • Projektor opsional

Udhëzime për zhvillimin

  • Mos e ekzekuto kodin e ndryshuar pa regjistruar më parë parashikimin
  • Kur kodi dështon, kërko rreshtin e fundit të gabimit, rreshtin që dështoi dhe një hipotezë para se të japësh rregullimin
  • Ndrysho vetëm një variabël ose rresht çdo herë, që shkaku dhe pasoja të mbeten të dukshme
  • Prano një parashikim të gabuar kur nxënësi e krahason me sinqeritet dhe rishikon mendimin
  • Nëse disa pajisje dështojnë, bashko nxënësit në kompjuterët që punojnë; ata që presin tastierën bëhen partnerë kontrollues ose drejtues prove dhe përdorin fletën e printuar. Ndërroji te pajisjet që punojnë pas programit bazë, korrigjimit dhe krijimit, në vend që të riparosh pajisjet një nga një gjatë mësimit
  • Pajisjen e bllokuar nga administratori trajtoje si të padisponueshme, jo si dështim të nxënësit; ndalo gjithë grupin vetëm kur i njëjti problem prek shumë pajisje

Diskutimi

  • Cili rresht shkaktoi ndryshimin e dukshëm dhe cila sjellje mbeti e njëjtë?
  • Çfarë të tregoi rreshti i fundit i NameError që të kontrolloje?
  • Çfarë ndryshove pasi vëzhgove vizatimin tënd të parë?

Hyrje e sugjeruar

Kërkoji një nxënësi të luajë rolin e Turtle, ndërsa një tjetër jep vetëm udhëzime për ecje dhe kthim. Lidhe paqartësinë e udhëzimeve njerëzore me saktësinë e kodit, pastaj kërko një parashikim para ekzekutimit të parë të ndryshuar.

Keqkuptim i mundshëm

Ta ekzekutosh sërish pa krijuar një hipotezë nuk është korrigjim. Nxënësit duhet të lidhin një simptomë të vërejtur me një ndryshim të vogël që mund të provohet.

Përgjigjja e pritshme

Nxënësit duhet të arrijnë një ekzekutim të parë të dukshëm, të ruajnë një parashikim të lëvizjes, ta krahasojnë me rezultatin, të shpjegojnë efektin e një variableje, të rregullojnë emrin e shkruar ndryshe dhe të krijojnë një vizatim të vogël personal.

Përshtatja

Kur punon vetëm, nxënësi i kryen të dy rolet. Në dyshe, drejtuesi i tastierës shkruan dhe ekzekuton; partneri parashikon, gjurmon kodin, lexon gabimet dhe propozon provën e radhës. Ndërroni rolet pas programit bazë, pas korrigjimit të gabimit dhe pas ekzekutimit të parë të krijimit. Para se të shkruajë, drejtuesi shpjegon propozimin e partnerit, që një nxënës më i sigurt të mos marrë gjithë punën. Me projektor, mblidh parashikimet para ekzekutimit.

Zgjerimi

Shto një variabël të dytë me emër, përdor `penup()` dhe `goto()` për të nisur një formë të veçantë, ose kthe një formë të përsëritur në funksion pasi nxënësi të arrijë mësimin e funksioneve.

Versioni i shkurtuar

Varianti i përmbledhur 35-minutësh (pajisjet duhet të jenë gati): 0-5 ekzekutimi bazë; 5-10 parashikimi dhe vëzhgimi; 10-15 ndryshimi i largësisë; 15-23 diagnostikimi dhe korrigjimi i NameError; 23-32 krijimi dhe ekzekutimi i një vizatimi personal me tri lëvizje; 32-35 shënimi i një lidhjeje shkak-pasojë. Ky variant heq zgjidhjen e problemeve të instalimit, diskutimin e zgjeruar, zbukurimin me ngjyra, një rishikim të dytë të krijimit dhe diskutimin e plotë përmbyllës.

Diskutimi përmbyllës

  • Ku të ndihmoi parashikimi të shmangje provat pa drejtim?
  • Si e ngushtoi kërkimin lloji i gabimit?
  • Cila zgjedhje e bëri vizatimin përfundimtar tëndin?

Përshtatja sipas grupit

Dyshe
Drejtuesi i tastierës shkruan dhe ekzekuton. Partneri parashikon, gjurmon kodin, lexon gabimet dhe propozon një provë. Ndërroni rolet pas programit bazë, pas korrigjimit dhe pas ekzekutimit të parë të krijimit, jo pas çdo klikimi.
Grupe të vogla
Puno me dyshe në pajisjet që funksionojnë. Një nxënës shtesë bëhet drejtues prove, shënon parashikimin e rezultatin dhe propozon ndryshimin e vetëm pasues para se drejtuesi ta shkruajë.
E gjithë klasa
Projekto kodin kur është e mundur, mblidh parashikimet pa i kthyer në garë shumice, ekzekutoje një herë dhe kërko rreshtin kontrollues. Nëse projektori dështon, përdor kodin e printuar dhe një pajisje që punon për ekzekutimet kryesore.

Instalimi dhe zgjidhja e problemeve

  • Python nuk gjendet: provo `py` në Windows, kontrollo instalimin e Python 3 dhe rihap terminalin
  • Ekzekutohet skedari i gabuar: ruaje, lexo emrin në titullin e editorit dhe përdor sërish Run Module
  • Gabim në sintaksë ose në dhëmbëzim: lexo numrin e rreshtit, krahaso shenjat dhe hapësirat në fillim, pastaj ndrysho vetëm një rresht
  • Dritarja Turtle mungon ose ngrin: përdor Python/IDLE në kompjuter, mbaj `turtle.done()` dhe mbyll dritaren e mëparshme para ekzekutimit tjetër
  • Shenjat e kopjuara sillen çuditshëm: rishkruaj thonjëzat dhe shenjat minus në editor

Gjete diçka të paqartë, të vjetruar ose që mund të përmirësohet? Sugjero një përmirësim

Nga vjen ky mësim

Ndërtuar mbi

  • Programming in a Data World: Leksioni 1 (Turtle + variablat)
  • Programming in a Data World: Fletorja e Leksionit (metodat e Turtle)

Kurset e alphaPlan ndërtohen mbi programe të zhvilluara në klasë, e nuk shpiken për web-in. Kur një pohim mbështetet mbi një standard të jashtëm ose mbi një rast të raportuar, ai emërtohet më sipër që ta kontrollosh vetë e të mos na besosh në fjalë.

Ky kurs u zhvillua nga alphaPlan Center mbi bazën e programeve të realizuara në partneritet me rrjetin American Corners.

Gjete diçka të paqartë, të vjetruar ose që mund të përmirësohet? Sugjero një përmirësim