Peleissä tarvitaan monimutkaisia silmukoita. Tässä kappaleessa voit haastaa itsesi ja oppia "silmukoiden mestariksi". Hallitsemalla tämän kappaleen asiat voitkin tunnustaa olevasi silmukoiden asiantuntija.
Jos sinusta tuntuu, että 'asiantuntija' on liian vaativa tavoite, niin vähimmäisvaatimuksena kuitenkin on se, että ymmärrät ja osaat ratkaista kahdeksan ensimmäistä probleemaa tästä kappaleesta.
Sivulla ovat vastaukset videoina ja koodit selitettynä (tosin englannin kielisinä. Voit tutkia sivun esimerkkikoodien toiminnan klikkaamalla 'Step' -painiketta.
6.1 Print lause ja End merkit
Jos siis haluamme kirjoittaa koodin, jolla tulostus saadaan samalle riville, pitää käyttää tulostuslauseessa end characteria. Esimerkiksi:
Tee ohjelma käyttämällä for silmukkarakennetta. Helpointahan olisi kirjoittaa yksi print lause, jossa on merkkijonossa kymmenen asteriskia, mutta tämä ei siis keplaa ratkaisuksi. Tähän riittää kaksi riviä koodia. Ensinnäkin for silmukka, jossa on print lause.
Voit verrata ratkaisuasi seuraavaan vastausmalliin:
Probleemassa 1 generoitiin asteriskirivi toistamalla silmukkaa kymmenen kertaa. Tässä tuota silmukkaa pitää toistaa toisessa (ulommaisessa) silmukassa kymmenen kertaa, jolloin haluttu tulos saadaan aikaan. älä katsoa ratkaisua ennen kuin olet 'punnertanut' tehtävän kanssa ainakin 10 minuuttia.
Vihje: Kirjoita ensin silmukka, jolla saat tulostettua ensimmäisen rivin. Sisällytä tämä ulompaan silmukkaan, joka toistaa tulostuksen kymmenen kertaa. Käytä tässä joko i tai j 'juoksevaa' muuttujaa (tai molempia). Tämä ja seuraava esimerkki valaisevat, miten nämä indeksi muuttujat toimivat.
Mieti ja kokeile konstruoida ratkaisusi ainakin kymmenen minuuttia ennen kuin katsot ratkaisun. Algoritmin (ohjelman) ymmärtäminen on tässä paljon tärkeämpää kuin itse ratkaisun löytyminen.
Vihje: Tämä on samanlainen kuin probleema 6, mutta nyt sisemmän silmukan toistokerrat ovat erilaiset jokaisella kerralla. älä siis käytä range(10), vaan nyt tarvitaan parametriksi muuttuja, jonka arvoa kasvatetaan toistojen edetessä.
älä tässäkään tehtävässä päästä itseäsi helpolla, vaan yritä löytää ratkaisu. Vertaa omaa ratkaisuasi malliratkaisuun:
Tämä on melko haastava, mutta ei mahdoton. Vihje: Tässä pitää olla kaksi silmukkaa ulomman silmukan sisällä. Näillä kontrolloidaan kunkin rivin tulostumista. Ensin silmukka tulostaa välilyöntejä ja sitten toinen silmukka tulostaa numeroita. Laita jokaisen rivin tulostaminen silmukkaan. Aluksi voit hahmotella ratkaisua helpommalla ohjelmalla, jossa on vain yksi sisäkkäinen silmukka ja joka tulostaa seuraavaa:
Kun saat tuon helpomman version toimimaan, lisää vielä yksi silmukka ulomman silmukan sisään ennen siinä olevaa ensimmäistä sisäsilmukkaa. Käytä tätä uutta sisäsilmukkaa välilyöntien tulostamiseen kunkin rivin alkuun.
Yritä tehdä oma ratkaisusi, äläkä luovuta helpolla. Kun saat oman ohjelmasi tehtyä, voit katsoa malliratkaisun:
Kirjoita seuraavaksi ohjelma, joka tulostaa numeroita mallin mukaan. (Asettelu on haastavaa.):
Tee ensin oma ratkaisusi valmiiksi ja voit sitten katsoa malliratkaisun tästä:
Ja lopulliseen versioon pitääkin vain lisätä välilyöntien tulostuminen rivin alkuun.
Omaa ratkaisuasi voit verrata malliratkaisuun:
älä luovuta heti. Yritä saada aikaiseksi oma ratkaisusi ja katso vasta sitten malliratkaisu:
Pohdi ja kokeile ratkaista tehtävä ja vasta sitten voit katsoa ratkaisumallin: