Python-kehityskurssi
Luku
>
Taso
Ehdot
Katkaisu- ja jatkolauseet
Tavoite
Poista mutoja rakennusten välistä käytävästä käyttäen silmukkaehtoja.
Rakennusten välistä käytävää kasvavat mutkat, kerää kaikki mutkat ja kaada ne pois silmukoita käyttämällä. On olemassa tapoja automatisoida tämä prosessi käyttämällä silmukkaehtoja.
Luo muuttuja nimeltä bag ja käytä sitä mutkien säilöimiseen niiden keräämisen aikana. Käytä while-silmukkaa ehtojen avulla prosessin automatisoimiseksi; yhteensä on kymmenen (10) mutkaa.
while True: player.move_forward() bag += 1 if bag == 10: break
Asettamalla while-silmukan ehtoon True silmukka ei lopu, ellei toimija break käytetä silmukan sulkemiseen. Jokainen silmukan kierros lisää mutkan pussiin ja tarkistaa, kuinka monta mutkaa on kerätty, jotta silmukka voidaan lopettaa. if-lauseella tarkistetaan, pitäisiko silmukan break-toiminnon aktivoida vai ei, se tarkistaa, kuinka monta mutkaa on bag-muuttujassa ja katkaisee silmukan, jos määrä täyttyy.
Käytävän läpikäynnin jälkeen käytä for-silmukkaa kaatamaan mutkat astioihin käyttämällä place()-funktiota X-merkein merkityissä kohdissa. Astioiden väliset askeleet ovat epäsäännölliset, sillä niiden välillä on rako. Käyttämällä continue-operaattoria ohitat yhden silmukan kierroksen testaamalla ehtoa if-lauseella.
for x in range(3): player.move_forward() if x == 1: continue player.turn_right() player.place(bag/2) player.turn_left()
Yllä olevassa koodissa if-lause tarkistaa, onko x, eli silmukan kierrosten lukumäärä, yhtä kuin 1. Tämä for-silmukka suoritetaan kolme (3) kertaa, kuten määritelty range()-funktion avulla; koska x alkaa nollasta, se suoritetaan arvoilla 0, 1, 2 ennen silmukan loppumista. Koska tarkistat, että kierros on arvoltaan 1, continue-komennon alainen koodi ei suoriteta vaan ohitetaan, mikäli ehto täyttyy. Näin voimme välttää rakojen syntymisen kahden astian välille, koska ohitimme keskimmäisen kierroksen.
Koska on kaksi (2) arkkua, käytä place()-funktiota kaatamaan bag-muuttujaan tallennetut mutkat jakamalla kokonaissumma, esimerkiksi näin: player.place(bag/2).
Kun olet kerännyt ja sijoittanut mutkat oikeisiin paikkoihin, saavuta tähdellä merkattu ulostulo suorittaaksesi tason.