Tie Koodariksi sivusto ja apua tehtävissä

Laita tuo "suurin = 0" ennen tuota for silmukkaa, muuten se nollaantuu joka kierros. Muuten näyttääkin samalta kuin oma ratkaisu.

doddi. Jotain tuollaista ounastelinkin ja pappatechin ja njs:n kommenttien perusteella tais mennä tuurilla oikein. Sen verran jäi kuitenkin harmittamaan, että täytyy käydä tuo koodi ajatuksella läpi ja ymmärtää. kiitos!
 
Samalla tavallahan tuossa tulee tuo summa alustettua ykköseksi jokaisella iteraatiolla, eli senkin alustus luupin ulkopuolelle.

Nää on just näitä juttuja, joita alkuvaiheessa tulee ja jotka pitää hiffata :) Menevät kyllä kohtuu pian sit jo ihan automaationa oikein.

En oo Pythonia debuggaillut, mutta kannattaa opetella debuggerinkin käyttö jossain kohtaa. Sillä voi siis käydä askel askeleelta tuota luuppia läpi ja katsoa, mitä minkin muuttujan arvona milloinkin on. Se paljastais esim. tällaiset ongelmat hyvin nopsaan. Google kertoo debuggereista ja debuggauksesta lisää.
Tuota debuggeria ja muita elämää helpottavia työkaluja olen miettinyt, mutta kun nettisivulla on tehtävänannon jälkeen laatikko ”koodi tähän”, niin mieli haluaa ymmärtää, että tehtävä olisi ratkaistavissa annetuilla ohjeilla ja työkaluilla. En tiedä olenko enää tätä mieltä...
 
Tuota debuggeria ja muita elämää helpottavia työkaluja olen miettinyt, mutta kun nettisivulla on tehtävänannon jälkeen laatikko ”koodi tähän”, niin mieli haluaa ymmärtää, että tehtävä olisi ratkaistavissa annetuilla ohjeilla ja työkaluilla. En tiedä olenko enää tätä mieltä...
Jyväskylän yliopistossa, jossa meikäläinen on paria tutkintoa veivannut, käytetään kanssa tiettyä webbisivun päällä olevaa oppimisympäristöä, jossa voi ajaa koodia, mutta se on tarkoitettu enimmäkseen siihen, että koodi kirjoitellaan oikealla editorilla ja pastetaan vasta toimivana oppimisympäristöön. Eli minun nähdäkseni voit kyllä ihan hyvin opetella käyttämään oikeaa koodieditoria / IDEä työkaluineen ja pasteta vaan valmiin koodin sen jälkeen em. laatikkoon. Vähänkään monimutkaisemman koodin työstäminen käy äkkiä epämukavaksi ilman kunnon editoria.

Visual Studio Code on ainakin helppo asentaa ja käyttää ja sille lienee valmiit plugarit Pythonia varten (syntaksikorostukset, linttaus yms).

P.S toivottavasti en katsonut hätäisesti omiani tuossa aikaisemmassa, kun en tullut katsoneeksi linkin takaa, mitä tuon algoritmit oli tarkoitus tarkalleen tehdä. Mutta hyvä, jos tuli oikea vastaus :D
 
Nyt ois taas käyttöä sille debuggerille, mut kysytään kuitenkin viisaammilta:
Tehtävä:
"
Sinulle annetaan positiivinen kokonaisluku n. Saat joka siirrolla vähentää lukua x:llä, missä x on jokin luvussa oleva numero. Haluat saada luvusta nollan käyttäen mahdollisimman vähän siirtoja.
Esimerkiksi kun n on 23, pienin siirtojen määrä on 5. Siirtosarja on 23 → 20 → 18 → 10 → 9 → 0. Mikä on pienin siirtojen määrä, kun n on 12345?
"

ja mun koodi:
Koodi:
summa = 0
luku = 23
apu = 0
while luku > 0:
    for merkki in str(luku):
        if merkki > apu:
            apu = merkki
    luku = luku - int(apu)
    summa += 1
print(summa)

antaa tuloksen "5" tuolla 23 kokonaisluvulla, mutta luvulla 12345 saan tulokseksi 1377, joka on ilmeisestikin väärin.
Hitto, kun luulin jo osaavani tällaisen vaikean :D
 
Koodi:
summa = 0
luku = 23
apu = 0
while luku > 0:
    for merkki in str(luku):
        if merkki > apu:
            apu = merkki
    luku = luku - int(apu)
    summa += 1
print(summa)

antaa tuloksen "5" tuolla 23 kokonaisluvulla, mutta luvulla 12345 saan tulokseksi 1377, joka on ilmeisestikin väärin.
Hitto, kun luulin jo osaavani tällaisen vaikean :D
apu pitää nollata joka kierroksella, eli siirrä apu=0 ennen for-silmukkaa. Muuten se sisältää edellisen luvun isoimman numeron.
 
Satunnaisuus-kappaleessa onkin sitten mielenkiintoisia tehtäviä. Sain tehtävät 3 ja 4 ratkaistua niin, että välillä Suorita-nappula antaa tuloksen "Oikein!" ja välillä "Väärin!"
Ehkä en ymmärrä tuota tehtävänantoa oikein, ainakaan tehtävä 5, ei suostu menemään oikein mun taidoilla:
"
Tarkastellaan tilannetta, jossa arvotaan kaksi kokonaislukua väliltä 1...100. Kuinka suuri on keskimäärin näiden lukujen ero? Esimerkiksi jos luvut ovat [43,78], niiden ero on 35.
Tee ohjelma, joka tulostaa arvion, kuinka suuri lukujen ero on keskimäärin.
"
ja mun räpellys (kommentoidut printit ovat omaa "debuggausta"):
Koodi:
from random import *
n = 3
summa = 0
for i in range(n):
    x =  randint(1,100)
    y =  randint(1,100)
    #print("x =",x)
    #print("y =",y)
    if x > y:
        summa = x - y
    else:
        summa = y - x
    #print(summa)
print(summa/n)

Mitäköhän tuo "keskimäärin" tässä tarkoittaa?

edit. äh. oli aivopieru. tällä "toimii":
Koodi:
from random import *
n = 3
total = 0
for i in range(n):
    summa = 0
    x =  randint(1,100)
    y =  randint(1,100)
    #print("x =",x)
    #print("y =",y)
    if x > y:
        summa = x - y
    else:
        summa = y - x
    #print(summa)
    total += summa
    
print(total/n)

mutta taas antaa "randomilla" väärin ja oikein kun kliksuttelee
 
Tuossa varmaan haetaan ratkaisua, jossa teet esim 100000 toistoa ja arvioit siitä.

Eli tyyliin
for i in range(100000)
arvo x ja y
summa+= abs ( x-y)

Ja lopulta sitten keskiarvo siitä.
 
Nyt ehkä tällä erää viimeinen tätä sarjaa ennenkuin taidot loppuvat:
"
Tehtäväsi on arvioida simulaation avulla, montako kertaa sinun tulee heittää noppaa keskimäärin, kunnes olet saanut peräkkäin kolme samaa silmälukua.
Tee ohjelma, joka tulostaa arvion, montako heittoa tarvitaan keskimäärin.
"
Olen saanut aikaiseksi koodin, joka osaa kertoa, että kuinka monta yritystä tarvitaan kolmeen samaan numeroon:
Koodi:
from random import *

a = 7
b = 8
c = 9
summa = 0
while a != b or a != c or b != c or a != b != c:
    a = randint(1,6)
    b = randint(1,6)
    c = randint(1,6)
    summa += 1
  
print(a,b,c)
print(summa)

mutta ymmärrys loppuu ennenkuin keksin miten tuo yksittäinen "summa" saadaan keskimääräistettyä.
ilmeisesti joku looppi vielä puuttuu?
Ja kyllä, muuttujat on alustettu rumasti, jotta osasin laittaa while-silmukan käyntiin.
 
Tehtäväsi on arvioida simulaation avulla, montako kertaa sinun tulee heittää noppaa keskimäärin, kunnes olet saanut peräkkäin kolme samaa silmälukua.
Tee ohjelma, joka tulostaa arvion, montako heittoa tarvitaan keskimäärin.

Varmaan tässä haetaan seuraavaa:

1. Heitä noppaa peräkkäin (vähintään 3 kertaa) ja lopeta kun saat 3 samaa lukua peräkkäin. Merkkaa ylös, montako heittoa teit.
2. Toista kohta 1 miljoona kertaa ja laske heittojen määrän keskiarvo.

Tee eka funktio, joka tekee vain kohdan 1 ja palauttaa heittojen lukumäärän. Helpoin on vaan tehdä while-luuppi jossa laitat listaan uuden random numeron. Tsekkaan onko 3 viimeistä samoja. Ja lopulta palautat sen listan koon.

Kun sulla on se funktio, niin kohta 2 on helppo tehdä erillään siitä. Siis oikeasti, tee se oma funktio :)
 
Koodi:
def kolme_samaa():
    # tähän koodi joka laskee heitot, joilla saadaan kolme samaa
    ....
    # Palauta heittojen lukumäärä
    return heittojen_lukumaara

iteraatiot = 1000
summa = 0
for i in range(1,iteraatiot):
    # Kasvatetaan summaa, joka pitää sisällään kullakin kerralla tarvitut heitot
    summa += kolme_samaa()

# Keskiarvo on em. summa jaettuna iteraatioilla
keskiarvo = summa / iteraatiot


Edellinen vastaaja kerkesi jo ensin, mutta siis jotain tuohon suuntaan, kuten koodiraakileessa. Ja Pythonin listahienouksilla saa taas varmasti siistittyä.
 
Viimeksi muokattu:
Korjasin tuosta raakileestani aivopierun, että arvot tallennettais taulukkoon ja lopuksi otettais summa taulukosta. Tuossa varmaan riittää vaan pitää muistissa summaa ja jakaa sen jälkeen summa iteraatioiden määrällä, niin saa keskiarvon. (kiireessä taas kirjoittelin)

Isot taulukot varaa vaan muistia, eikä sitä kannata tehdä, jos ei kerran ole pakko.
 
Luku 14, tehtävä 5:
"
Piirissä on n pelaajaa, jotka on numeroitu myötäpäivään 1, 2, 3, ..., n. Vuoro kiertää piirissä pelaajasta 1 alkaen myötäpäivään ja joka toinen pelaaja poistuu piiristä, kunnes piiri on tyhjä.
Esimerkiksi kun n on 7, pelaajat poistuvat seuraavassa järjestyksessä:
2 4 6 1 5 3 7 (luvut oikeasti allekkain, tilan säästämiseksi laitoin ne peräkkäin)
"

Kun kokeilen erilaisilla n:n arvoilla tätä koodiani:
Koodi:
n = 100
luku = 2
apuluku = luku - 1
while luku <= n:
    print(luku)
    luku = luku + 2
while apuluku <= n:
    print(apuluku)
    apuluku += 2

niin mielestäni kaikki toimii ja tulokset ovat oikeita. Tuntuisi toimivan sekä parittomilla, että parillisilla luvuilla, mutta sivusto herjailee että ratkaisuni on väärin. plaah.
 
Luku 14, tehtävä 5:
"
Piirissä on n pelaajaa, jotka on numeroitu myötäpäivään 1, 2, 3, ..., n. Vuoro kiertää piirissä pelaajasta 1 alkaen myötäpäivään ja joka toinen pelaaja poistuu piiristä, kunnes piiri on tyhjä.
Esimerkiksi kun n on 7, pelaajat poistuvat seuraavassa järjestyksessä:
2 4 6 1 5 3 7 (luvut oikeasti allekkain, tilan säästämiseksi laitoin ne peräkkäin)
"

Kun kokeilen erilaisilla n:n arvoilla tätä koodiani:
Koodi:
n = 100
luku = 2
apuluku = luku - 1
while luku <= n:
    print(luku)
    luku = luku + 2
while apuluku <= n:
    print(apuluku)
    apuluku += 2

niin mielestäni kaikki toimii ja tulokset ovat oikeita. Tuntuisi toimivan sekä parittomilla, että parillisilla luvuilla, mutta sivusto herjailee että ratkaisuni on väärin. plaah.
Parillisilla luvuilla tuon ensimmäisen silmukan viimeisenä poistuu koko ringin viimeinen ja sitten tuo apusilmukka aloittaa ykköspaikasta eli viereisestä. Sen pitäisi siis aloittaa paikasta 3 tuolloin.

Onko kurssilla käsitelty listoja? Omasta mielestä tämä vaatisi sitä, että jäljellä olevat "paikat" tallennetaan johonkin ja niitä käydään läpi niin kauan kun niitä riittää.
Tai riippuu siitä miten noita tyhjiä paikkoja tulisi tulkita toisella kierroksella...
 
Tuossa tehtävänannossa on muuten virhe, en tiedä, että vaikuttaako lopputulokseen:
"
Esimerkiksi kun n on 7, pelaajat poistuvat seuraavassa järjestyksessä:
2 4 6 1 5 3 7 (luvut oikeasti allekkain, tilan säästämiseksi laitoin ne peräkkäin)
"
Tuollainen 1-5-3 taitaa olla mahdoton ja 1-3-5 se oikea.

Rimpuilin vielä taulukointia vastaan ja kaikkien oikeiden koodareihin kauhuksi väsäsin tällaisen:
Koodi:
n = 7
luku = 2
apuluku = luku - 1
apu2luku = luku + 1
if n%2 ==0:
    while luku <= n:
        print(luku)
        luku += 2
    while apu2luku <= n:
        print(apu2luku)
        apu2luku += 2
    print("1")
else:
    while luku<= n:
        print(luku)
        luku += 2
    while apuluku <= n:
        print(apuluku)
        apuluku += 2

Varmaan kaikkien sääntöjen vastaisesti pakotin ohjelman tulostamaan ykkösen oikeaan paikkaan, mutta eipä se vieläkään kelpaa...
 
Hiukan offtopic mutta musta nää "kurssin" tehtävät vaikuttaa aika oudoilta ja vähän epämääräisiltä.
 
Hiukan offtopic mutta musta nää "kurssin" tehtävät vaikuttaa aika oudoilta ja vähän epämääräisiltä.

Tästä ihan samaa mieltä. Moocin java-kurssi oli aivan huippu, koska siinä tehtävänannot olivat selkeitä ja opetusmateriaalia huippuluokkaa. Toivottavasti laittavat Python-kurssin myös aikatauluttomaksi, niin sen kanssa tulee kyllä harjoiteltua.
 
Hyppää @Stinde vaan ihan suosiolla tekemään tota Moocin Python-kurssia. Siellähän on näköjään kasapäin luentotallenteitakin katsottavana ja tehtävät todennäköisesti jonkin matkaa fiksumpia + paremmin alustettuja.

Tai sitten sää yrität mennä bärse edellä puuhun ja tehdä semmoisia tehtäviä, joihin liittyviä matskuja et oo vielä lukenut. Tuo em. tehtävä lienee jonkin matkaa mukavampi ja intuitiivisempi tehdä taulukolla.

Ja on nuo tosiaan tänne pastettujen kuvausten perusteella vähän epämääräisesti määriteltyjä nuo tehtävät.

muoks. ja eihän kukaan kai estä tekemästä noita Moocin pythoneita, vaikka siellä joku aikataulu onkin. Jos siitä ei siis opintopisteitä meinaa ottaa. Sinnehän noi matskut kuitenkin yleensä jää ihmeteltäväksi.
 
Hyppää @Stinde vaan ihan suosiolla tekemään tota Moocin Python-kurssia. Siellähän on näköjään kasapäin luentotallenteitakin katsottavana ja tehtävät todennäköisesti jonkin matkaa fiksumpia + paremmin alustettuja.

Tai sitten sää yrität mennä bärse edellä puuhun ja tehdä semmoisia tehtäviä, joihin liittyviä matskuja et oo vielä lukenut. Tuo em. tehtävä lienee jonkin matkaa mukavampi ja intuitiivisempi tehdä taulukolla.

Ja on nuo tosiaan tänne pastettujen kuvausten perusteella vähän epämääräisesti määriteltyjä nuo tehtävät.

muoks. ja eihän kukaan kai estä tekemästä noita Moocin pythoneita, vaikka siellä joku aikataulu onkin. Jos siitä ei siis opintopisteitä meinaa ottaa. Sinnehän noi matskut kuitenkin yleensä jää ihmeteltäväksi.

Juuri näin. Eiköhän se ole tässä tullut jo selväksi, ettei tuo kurssimateriaali ole tällaiselle aloittelijalle sellainen minkä kanssa pystyisi kunnolla opiskelemaan ja teille "ammattilaisille" mun ihmettelyt aiheuttavat varmaan vain naureskeluja.
Tuo moocin python-kurssi on mennyt juuri kiinni ja tehtäviä ei pysty nyt tekemään. luentomatskuja olisi youtubessa tuntikausia tarjolla. Ehkä niistä voisi odotellessa aloittaa.
 
Juuri näin. Eiköhän se ole tässä tullut jo selväksi, ettei tuo kurssimateriaali ole tällaiselle aloittelijalle sellainen minkä kanssa pystyisi kunnolla opiskelemaan ja teille "ammattilaisille" mun ihmettelyt aiheuttavat varmaan vain naureskeluja.
Tuo moocin python-kurssi on mennyt juuri kiinni ja tehtäviä ei pysty nyt tekemään. luentomatskuja olisi youtubessa tuntikausia tarjolla. Ehkä niistä voisi odotellessa aloittaa.

En mä usko, että sulle on kukaan tässä ketjussa nauranut.
Tuo sivusto on herättänyt enemmän kysymyksiä.

Mä oon edelleen siinä vakaassa näkemyksessä, että tuo on tarkoitettu jonkun livekurssin tueksi - jossa tehtäviin liittyvät asiat käsitellään erikseen.
 
Joo, ei minulla ainakaan oo pienintäkään tarvetta naureskella kenellekään, kuka haluaa koodaamaan opetella. Ne on noita ihan samoja juttuja, joiden kanssa kaikki joutuu painimaan alussa.

Se opettelu voi olla vaan joko mielenkiintoista ja tosi antoisaa tai sitten lähinnä epämiellyttävää pään seinään hakkaamista riippuen materiaalista ja tehtävistä. Sen puolesta kannattais tosiaan katsoa, josko noi Moocin matskut oisivat vähäsen paremmin ohjeistettuja ja fiksumpia, niin siinä reenissä on paljon enemmän mieltä.

Tosiaan ainakin Moocin Java- sekä Fullstack-kurssit ovat olleet mainioita.
 
Tuossa tehtävänannossa on muuten virhe, en tiedä, että vaikuttaako lopputulokseen:
"
Esimerkiksi kun n on 7, pelaajat poistuvat seuraavassa järjestyksessä:
2 4 6 1 5 3 7 (luvut oikeasti allekkain, tilan säästämiseksi laitoin ne peräkkäin)
"
Tuollainen 1-5-3 taitaa olla mahdoton ja 1-3-5 se oikea.

Tuo 1-5-3 ei ole virhe, vaan toisellakin (ja kaikilla sen jälkeisillä) kierroksella on tarkoituksen hyppiä joka toisen "paikan" yli.
Koodi:
[1, 2, 3, 4, 5, 6, 7]
poistetaan 2
[1, 3, 4, 5, 6, 7]

[1, 3, 4, 5, 6, 7]
poistetaan 4
[1, 3, 5, 6, 7]

[1, 3, 5, 6, 7]
poistetaan 6
[1, 3, 5, 7]

[1, 3, 5, 7]
poistetaan 1
[3, 5, 7]

[3, 5, 7]
poistetaan 5
[3, 7]

[3, 7]
poistetaan 3
[7]

[7]
poistetaan 7
[]
En oikeasti keksi miten tuon voisi toteuttaa ilman listaa jäljellä olevista paikoista
 
Juuri näin. Eiköhän se ole tässä tullut jo selväksi, ettei tuo kurssimateriaali ole tällaiselle aloittelijalle sellainen minkä kanssa pystyisi kunnolla opiskelemaan ja teille "ammattilaisille" mun ihmettelyt aiheuttavat varmaan vain naureskeluja.
Tuo moocin python-kurssi on mennyt juuri kiinni ja tehtäviä ei pysty nyt tekemään. luentomatskuja olisi youtubessa tuntikausia tarjolla. Ehkä niistä voisi odotellessa aloittaa.
Tuolla moocissa oli jossain kommentti että tuo Python-kurssi avataan aikatauluttomana heti vuodenvaihteen jälkeen. Itsekin jäin tuota odottelemaan. Aluksi tuo saattaa vaan itselleni olla aika tuskaista kun on pari-kolme vuotta pythonilla kaikenlaista koodaillut mutta mitä tutuilta ja kavereilta olen kuullut tuosta java-versiosta niin odotukset ovat korkealla tuon python-kurssin suhteen.
 
Juuri näin. Eiköhän se ole tässä tullut jo selväksi, ettei tuo kurssimateriaali ole tällaiselle aloittelijalle sellainen minkä kanssa pystyisi kunnolla opiskelemaan ja teille "ammattilaisille" mun ihmettelyt aiheuttavat varmaan vain naureskeluja.
Tuo moocin python-kurssi on mennyt juuri kiinni ja tehtäviä ei pysty nyt tekemään. luentomatskuja olisi youtubessa tuntikausia tarjolla. Ehkä niistä voisi odotellessa aloittaa.

Syksyn python-kurssin tehtäviä pystyy edelleen tekemään ja ne pystyy myös tarkistamaan. Pisteitä tehtävistä ei enää saa. Uusi python-kurssi alkaa 11.01.
 
Viimeksi muokattu:
Kiitos @Stinde tämän hauskan sivuston esille nostamisesta. Itsellä ei ole "oikeaa" ohjelmointitaustaa, mutta yli kymmenen vuotta olen paininut datan kanssa ja siihen liittyen vääntänyt jos jonkinlaista koodia eli ihan vasta-alkaja en ole koodauksen suhteen. Python ei ole ennestään tuttu, mutta ensi vuonna pitäisi alkaa pyöritellä enemmänkin koneoppimishommia Azuressa ja niissä Python on omiaan, mikä innoitti hyppäämään tämän harjoitusmateriaalin pariin näin joululomalla :)

Sain nyt parin päivän uurastuksen jälkeen kaikkiin tehtäviin oikeat vastaukset ja useimmiten ratkaisu oli selkeä ja intuitiivinen eikä vaadittu mitään ihmeellisiä kikkailuja. Ainut tehtävä, joka jäi vähän kaivelemaan oli tuo luvun 14 tehtävä 5 eli piiritehtävä. Oma ratkaisuni perustui siihen, että luupataan listaa läpi ja poistetaan siitä kierroksen aikana poistetut pelaajat. Jos edellinen lista oli pariton, eikä jako mene tällöin tasan, siirretään viimeinen elementti seuraavan iteraation ensimmäiseksi. Tämän lisäksi piti vielä paikata viimeisen valitun tilanne omalla iffillään, kun range oli joka toisen elementin välein. Alla ratkaisuni:

Python:
n = 1000
piiri = list(range(1,n+1))
checklist = []

while len(checklist) < n:

    # Iteraatio, kun piirissä enemmän kuin 1 jäsen --> pakollinen, koska iterointi aloitetaan aina 2. jäsenestä
    if len(piiri) > 1:
        for i in range(1,len(piiri),2):
            checklist.append(piiri[i])
            print(piiri[i])

    # Iteraatio, kun piirissä yksi jäsen
    else:
        checklist.append(piiri[0])
        print(piiri[0])

    # Jos jako ei mene tasan, siirretään viimeinen ensimmäiseksi ja aloitetaan alusta
    if len(piiri) % 2 != 0: piiri.insert(0, piiri.pop())

    # Tyhjennetään checklistissä olevat jäsenet alkuperäisestä listasta
    piiri = [x for x in piiri if x not in checklist]

Ratkaisu vaikutti hieman kököltä. Olisiko tämän saanut toteutettua elegantimmin?
 
En jaksa koodin muotoon aivopieruani pukea mutta itse varmaan generoisin listan kaikista piirissä olevista, siirtäisin ensimmäisen listan itemin viimeiseksi ja sitten ottaisin listan ensimmäisen, tulostaisin ja poistaisin sen ja taas siirtäisin listan ensimmäisen loppuun ja ottaisin taas ensimmäisen, tulostaisin ja poistaisin ja tällä tavalla luuppaisin kunnes lista on tyhjä.
 
En jaksa koodin muotoon aivopieruani pukea mutta itse varmaan generoisin listan kaikista piirissä olevista, siirtäisin ensimmäisen listan itemin viimeiseksi ja sitten ottaisin listan ensimmäisen, tulostaisin ja poistaisin sen ja taas siirtäisin listan ensimmäisen loppuun ja ottaisin taas ensimmäisen, tulostaisin ja poistaisin ja tällä tavalla luuppaisin kunnes lista on tyhjä.


Python:
# coding=UTF-8
piiri = range(1, 1001)

while len(piiri) > 0:
    # Listan ensimmäinen item vikaksi
    piiri += [piiri.pop(0)]

    # Tulostetaan seuraava
    print(piiri[0])
    # Poistetaan äsken tulostettu
    piiri.pop(0)

    # Jos piiri on tyhjä niin ei tehdä mitään
    if len(piiri) == 0:
        pass
 
Syksyn python-kurssin tehtäviä pystyy edelleen tekemään ja ne pystyy myös tarkistamaan. Pisteitä tehtävistä ei enää saa. Uusi python-kurssi alkaa 11.01.

Taisin eilen kokeilla vahingossa kevät 2020 kurssin tehtäviä ja ne olivat "lukossa". tuo syksy2020 tuntuu toimivan paremmin, mutta siinäkään ei ratkaisu tallentunut.
Eihän tässä ole kuin 10 päivää ja sitten pääsisi oikealle kurssille. Toivottavasti sieltä tulee myös se aikatauluton versio, kun oma eteneminen on hyvin kausittaista.
 
Huh, "Olet ratkaissut 84/84 tehtävää". Ei olisi onnistunut ilman tätä foorumia ja jokusen vastauksen lunttasin intternetsistä, mutta suoria kopioita ei tainnut olla kuin yksi, eli tehtävä missä piti tehdä listoilla Pascalin kolmio.
Tästä koodista:
Koodi:
def PascalTriangle(n):
   trow = [1]
   y = [0]
   for x in range(n):
      print(trow)
      trow=[left+right for left,right in zip(trow+y, y+trow)]
   return n>=1
  
PascalTriangle(25)
en ymmärrä juuri mitään, paitsi sen, että käskyjä löytyy joka lähtöön ja opittavaa riittäisi varmaan enemmän kuin on elämää jäljellä.
Iso kiitos kaikille avustajille ja toivottavasti moocin kanssa olen vähemmän hukassa :)
 
Lähtee kyllä tosi perusasioista toi Moocin Python-kurssi. Ja näyttäis olevan mukavasti selitetty kaikki olennaisimmat perusjutut. Naputtelin tuon ykkösosan tässä sohvalla maatessani hyppien toistoa ja jotain aivan itsestäänselviä tehtäviä.

Tuo muuttujien yhdisteleminen merkkijonoihin f-merkkijonoilla on syntaksiltaan mukavan sujuvaa. Ei käyty täällä yliopistossa minusta tuollaista joku vuosi sitten. Samoin tiedon lukeminen käyttäjältä plus tyyppimuunnokset menevät Pythonilla näppärästi ja pienellä määrällä koodia Javaan verrattuna.

Olettaisin tuon ykkösosan perusteella, että tähän pääsee kyllä kohtuu kivuttomasti mukaan aivan nollapohjaltakin. Pitää ihmetellä myöhemmin, miten tuo lähtee etenemään.
 
Itsekin juuri testasin tuon Moocin Python-kurssin ensimmäisen osan. Tein kaikki tehtävät vaikka olikin vähän toistoa ja sellaisia asioita mitä jo osasi. Tuon print(f"") -muodon olin joskus aiemmin nähnyt mutta nyt sitten itsekin opin tuon, on oikein kätevä juttu. Näin useamman vuden kokemuksella tuo ykkösosa oli kyllä ihan läpihuutojuttu, kaikki tehtävät ykkösellä läpi paitsi yksi jossa tehtävänannossa oli mahdollisuus käsittää asia kahdella tavalla ja tottakai arvoin ekalla kerralla sen toisen tavan.

Varmaan ihan aloittelijalle tuo on aika helppo kurssi päästä sisään, uusia asioita tulee aika maltillisesti ja vanhoja kerrataan tehtävissä niin että aloittelijallekin alkaa jäämään selkäytimeen. Ainoa tuossa oli että online-editori on aika kankea kun on tottunut vim:n copypaste-toimintoihin sun muihin, kutenkin koko ajan tulee samantyylisiä rivejä kirjoitettavaksi ja kun laiska olen niin copypastella mennään. Tietty jotain koodin skeletonia toivoisi noihin tehtäviin, vähän rupesi turhauttamaan se muuttuja = int(input("Anna luku: ") kirjoittelu pidemmän päälle kun about joka tehtävässä oli sama alku.
 
Python:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  PIIRI.PY
#  Piirissä on n pelaajaa, jotka on numeroitu myötäpäivään 1, 2, 3, ..., n.
#  Vuoro kiertää piirissä pelaajasta 1 alkaen myötäpäivään ja joka toinen
#  pelaaja poistuu piiristä, kunnes piiri on tyhjä.
#  Esimerkiksi kun n on 7, pelaajat poistuvat seuraavassa järjestyksessä:
#  2 4 6 1 5 3 7

def go(n):
    a=[i for i in range(1,n+1)]
    while a:
        a.append(a.pop(0))
        print(a.pop(0))
    
go(7)
 
Hyppäsin nyt mukaan tuohon moocin kevään python-kurssille ja ensimmäisen osion tehtävät naputtelin parissa tunnissa lävitse.
Onhan tuo kurssimateriaali ja YouTube-luentovideot kertaluokkaa parempia kuin tie koodariksi opastus.
Oli muuten selkeästi hyötyä täällä saaduista neuvoista ja tällainen aloittelijakin tuntui ymmärtävän yhtä ja toista :)
 

Statistiikka

Viestiketjuista
261 816
Viestejä
4 548 227
Jäsenet
74 849
Uusin jäsen
Pizzapäivä123

Hinta.fi

Back
Ylös Bottom