Tapahtumat

Kun kirjaudut sisään näet tässä ilmoitukset sinua kiinnostavista asioista.

Kirjaudu sisään

Mitä Pythonin for-silmukalla aidosti tekee?

Vierailija
29.10.2014 |

Kysyy hän.

Kommentit (20)

Vierailija
1/20 |
29.10.2014 |
Näytä aiemmat lainaukset

https://wiki.python.org/moin/ForLoop

 

Saat koodisi paljon yksinkertaisemmaksi ja lyhyemmäksi, mikä tekee siitä paremman. For-loop löytyy myös muista koodauskielistä.

Vierailija
2/20 |
29.10.2014 |
Näytä aiemmat lainaukset

Jännä kysymys. Siis kyllähän silmukkarakenteita tarvitaan todella usein. Tyyppiesimerkki, että käsittelet listaa ja haluat jokaiselle listan alkiolle tehdä jotain.

Ohjelmoinnin perusrakenteet yleensäkin ovat peräkkäisyys, valinta ja toisto, ja for-silmukka kuuluu tuohon toisto-kohtaan.

Sisältö jatkuu mainoksen alla
Sisältö jatkuu mainoksen alla
Vierailija
3/20 |
29.10.2014 |
Näytä aiemmat lainaukset

Tiedän perusteet mutta while-silmukalla tekee edelleen kaiken mihin for-silmukka pystyy, ja lisäksi se on Pythonissa toteutettu sekavasti.

Vierailija
4/20 |
29.10.2014 |
Näytä aiemmat lainaukset

Samaa kai kuin muissakin ohjelmointikielissä. Toistorakenne saadaan selkeämmäksi silloin, kun halutaan tehdä toistoja tietty määrä.

Vierailija
5/20 |
29.10.2014 |
Näytä aiemmat lainaukset

[quote author="Vierailija" time="29.10.2014 klo 15:32"]

Tiedän perusteet mutta while-silmukalla tekee edelleen kaiken mihin for-silmukka pystyy, ja lisäksi se on Pythonissa toteutettu sekavasti.

[/quote]

Se on ihan makuasia mitä silmukkatyyppiä nyt tykkää milloinkin käyttää ja missäkin tilanteissa. Itse tykkään käyttää paljonkin for-silmukkaa. 

Vierailija
6/20 |
29.10.2014 |
Näytä aiemmat lainaukset

Sitä tehdään niin kauan kunnes joku ehto täyttyy.

Esim. vanhene vuodella ja kun olet satavuotias, kuole pois.

Ihan perusjuttuja kaikissa yleisissä ohjelmointikielissä.

Sisältö jatkuu mainoksen alla
Vierailija
7/20 |
29.10.2014 |
Näytä aiemmat lainaukset

[quote author="Vierailija" time="29.10.2014 klo 15:33"]

Se on ihan makuasia mitä silmukkatyyppiä nyt tykkää milloinkin käyttää ja missäkin tilanteissa. Itse tykkään käyttää paljonkin for-silmukkaa. 

[/quote]

 

Sama, itse käytän for-loopia lähes aina. For minulle opetettiin ennen while-loopia, joten kai se tuntuu siksi minusta tutummalta.

Vierailija
8/20 |
29.10.2014 |
Näytä aiemmat lainaukset

[quote author="Vierailija" time="29.10.2014 klo 15:32"]

Tiedän perusteet mutta while-silmukalla tekee edelleen kaiken mihin for-silmukka pystyy, ja lisäksi se on Pythonissa toteutettu sekavasti.

[/quote]

Tottahan toki on että periaatteessa riittäisi 1 silmukkarakenne yhteen ohjelmointikieleen ja sillä voisi tehdä kaikki. Mutta on paljon mukavampaa että niitä on erilaisia,  niin että löytyy eri tarkoituksiin ja eri ohjelmoijille sopivia. Mitään haittaahan tästä monipuolisuudesta ei ole, kyllä sitä niin haluava saa käyttää vaikka aina while-silmukkaa tai aina for-silmukkaa...

Sisältö jatkuu mainoksen alla
Vierailija
9/20 |
29.10.2014 |
Näytä aiemmat lainaukset

for-looppi on yleensä selkeämpi ja luettavampi ja while-looppia tulisi käyttää vain, jos siistiä for-looppia ei saa aikaiseksi.

 

Vierailija
10/20 |
29.10.2014 |
Näytä aiemmat lainaukset

[quote author="Vierailija" time="29.10.2014 klo 15:35"]

Sitä tehdään niin kauan kunnes joku ehto täyttyy.

Esim. vanhene vuodella ja kun olet satavuotias, kuole pois.

Ihan perusjuttuja kaikissa yleisissä ohjelmointikielissä.

[/quote]

 # -*- coding: utf-8 -*-

ikä = 0

while ikä < 101

    print "vanhene vuodella"

    ikä = ikä + 1

#kukaan ei tietenkään ole keksinyt luoda Pythoniin samanlaisen ++ operaattorin kun javaan...

print "kuole pois"

 

Että ei se sen vaikeampaa ole. For-silmukalla tulisi paljon sekavammaksi.

Sisältö jatkuu mainoksen alla
Vierailija
11/20 |
29.10.2014 |
Näytä aiemmat lainaukset

[quote author="Vierailija" time="29.10.2014 klo 15:52"]

[quote author="Vierailija" time="29.10.2014 klo 15:35"]

Sitä tehdään niin kauan kunnes joku ehto täyttyy.

Esim. vanhene vuodella ja kun olet satavuotias, kuole pois.

Ihan perusjuttuja kaikissa yleisissä ohjelmointikielissä.

[/quote]

 # -*- coding: utf-8 -*-

ikä = 0

while ikä < 101

    print "vanhene vuodella"

    ikä = ikä + 1

#kukaan ei tietenkään ole keksinyt luoda Pythoniin samanlaisen ++ operaattorin kun javaan...

print "kuole pois"

 

Että ei se sen vaikeampaa ole. For-silmukalla tulisi paljon sekavammaksi.

[/quote]

miten se sekavampaa olisi että laittaisit ehdoksi 

for ika in xrange(0,100):

    print "vanhene vuodella"

    ikä = ikä + 1

 

?

Vierailija
12/20 |
29.10.2014 |
Näytä aiemmat lainaukset

[quote author="Vierailija" time="29.10.2014 klo 15:57"]

[quote author="Vierailija" time="29.10.2014 klo 15:52"]

[quote author="Vierailija" time="29.10.2014 klo 15:35"]

Sitä tehdään niin kauan kunnes joku ehto täyttyy.

Esim. vanhene vuodella ja kun olet satavuotias, kuole pois.

Ihan perusjuttuja kaikissa yleisissä ohjelmointikielissä.

[/quote]

 # -*- coding: utf-8 -*-

ikä = 0

while ikä < 101

    print "vanhene vuodella"

    ikä = ikä + 1

#kukaan ei tietenkään ole keksinyt luoda Pythoniin samanlaisen ++ operaattorin kun javaan...

print "kuole pois"

 

Että ei se sen vaikeampaa ole. For-silmukalla tulisi paljon sekavammaksi.

[/quote]

miten se sekavampaa olisi että laittaisit ehdoksi 

for ika in xrange(0,100):

    print "vanhene vuodella"

    ikä = ikä + 1

 

?

[/quote]

Okei, ehkä menettele mutta miksei ne olisi voinut mielummin luoda sen muotoon for ika=0:100? While-silmukka on siinä mielessä ainakin aloittelijaystävällisempi. Sitten jos oikeasti tekee työtä jonkun aineiston kanssa, kuten joku ehdotti listaa, voi while-silmukkaan lisätä ehtoja ja sillä hyppiä yli selvät tilastopoikkeamat. For-silmukassa ei pysty hallitsemaan indeksiä samalla tavalla.

Sisältö jatkuu mainoksen alla
Vierailija
13/20 |
29.10.2014 |
Näytä aiemmat lainaukset

"There is always more than one way to do it"

Vierailija
14/20 |
29.10.2014 |
Näytä aiemmat lainaukset

Mistä te puhutte? Luin otsikosta vain sanan "silmukka" ja oletin, että puhuttaisiin käsitöistä D:

Sisältö jatkuu mainoksen alla
Vierailija
15/20 |
29.10.2014 |
Näytä aiemmat lainaukset

[quote author="Vierailija" time="29.10.2014 klo 16:09"]

Mistä te puhutte? Luin otsikosta vain sanan "silmukka" ja oletin, että puhuttaisiin käsitöistä D:

[/quote]

Käärmeistä.

Vierailija
16/20 |
29.10.2014 |
Näytä aiemmat lainaukset

[quote author="Vierailija" time="29.10.2014 klo 16:09"]

Mistä te puhutte? Luin otsikosta vain sanan "silmukka" ja oletin, että puhuttaisiin käsitöistä D:

[/quote]

Mitä itse höpötät? Kyllähän jokaisen av-mamman sen verran koodaa että tietää silmukat.

Vierailija
17/20 |
29.10.2014 |
Näytä aiemmat lainaukset

Repesin jo kun näin pelkästään tämän otsikon täällä AV:lla. :D :D :D Menee yli hilseen ainakin 99%:lla mammoista.

Vierailija
18/20 |
29.10.2014 |
Näytä aiemmat lainaukset

Joo, mulla on edelleen mielikuvana se että joka ikinen täällä palstaileva on sellanen 45v kukkahattumamma joten tätä keskustelua oli kyllä hauska lukea :D ei siis sillä etteikö nämä mammat voisi olla näppäriä koodaajia mutta silti...

Vierailija
19/20 |
29.10.2014 |
Näytä aiemmat lainaukset

Mutta nyt kun Pythonissa tekee silmukan joka tulostaa jotain, esimerkiksi tuo vanhene vuodella, niin ohjelma tulostaa aina eri riville:

vanhene vuodella

vanhene vuodella

vanhene vuodella

vanhene vuodella

vanhene vuodella

vanhene vuodella

vanhene vuodella

jne.

Miten saisi niin että tulkki poistaa edellisen tekstin ja tulostaa uuden tilalle?

Vierailija
20/20 |
29.10.2014 |
Näytä aiemmat lainaukset

Useimmitenhan for- tai muita silmukoita käytetään jonkun kontainerin alkoiden läpikäymiseen. Silloin on järkevä käyttää foreach-tyyppistä rakennetta:

for item in items:print item

Kirjoita seuraavat numerot peräkkäin: viisi kaksi seitsemän