Hei,
Aloin testaamaan python-kieltä mutta vaikka python on selkeä ohjelmointikieli, niin heti tuli ongelmia:
Yritän tarkistaa että onko annetun merkkijonon merkkien lukumäärä eri kuin 1, mutta en vain osaa.
arvaus = input("anna kirjain: ") if int(arvaus) != 1 ... if int(arvaus) <> 1 print ("Merkkien lukumäärän tulee olla 1")
Mutta saan vain invalid syntaxia, koska en osaa kirjoittaa kyseistä lausetta oikein.
Python-kieli on kai muuttunut kovasti, koska kun kokeilen "kääntää" ohjelmointiputkan esimerkkejä, niin tuskin mikään menee suoraan läpi, vaan saan aina virheitä?
Tutki aluksi lähemmin miten if-lause toimii pythonissa. http://www.tutorialspoint.com/python/
Kannattaa myös huomioida, että versioiden 2.x ja 3 on eroja. Esimerkkinä:
Python v2.7: raw_input("anna arvo")
Python v3: input("anna arvo")
Putkan oppaat ovat tarkoitettu 2.7 versioilla tehtäväksi.
Ohjelmointiputkan python-opas on python 2:lle ja saatat käyttää python 3 -tulkkia. Nämä versiot eivät ole keskenään yhteensopivia edes alaspäin.
Etkä voi tarkistaa merkkijonon pituutta yrittämällä muuttaa sitä kokonaisluvuksi (int-funktio).
Ok, mulla on tosiaan käytössä uusin, eli 3.3.2 versio.
Nyt on if-lause kunnossa ja int vaihdettu len-funktioon, mutta en tullut sen viisaammaksi:
arvaus = input("anna kirjain: ") if len(arvaus) != 1: print ("Merkkien lukumäärän tulee olla 1") else: print ("Hyvältä näyttää")
Mutta vieläkin tulee invalid syntaxia
Luehan niitä virheilmoituksia.
Python on paska kieli.
Ei vaan :)
Nukun yön yli ja olen aamulla viisaampi.
Olisit selvinnyt ihan vain lukemalla virheilmoituksen. Ei sitten.
Olet jo tosi lähellä! Neljännellä rivillä ainakin jotain häikkää :)
Poista turhat tyhjät rivit ja sisennä koodi oikein.
tähän on kyllä pakko sanoa, että alkoi aikanaan melkoisesti ottamaan päähän 3.0:n ulostullessa, kun ei osannut enää edes hello worldia tehdä ilman opasta.
No nyt ei tule virheitä! Kiitos avusta. Enpä olisi uskonut, että jos ei sisennä koodia, niin koodi ei toimi :D
edit:
Oppaassahan se tosin kerrottiin.
SE KERROTTIIN SIINÄ VIRHEILMOITUKSESSA! Mikä helvetti siinä on niin vaikeaa?
Eniten hämäsi se, että ylipäätänsä vaaditaan sisennys, kun kielet joita olen käyttänyt ei ole välittänyt siitä asiasta yhtään mitään.
Virheteksti oli: unexpected indent, joka ei nyt suoraan kerro sitä, että sisennykset vaaditaan.
Ikään kuin sisennyksestä valittaminen voisi kertoa mistään muusta kuin sisennyksestä?
Virheviesti on kylläkin seuraava:
IndentationError: expected an indented block
Python 3.3.2 Shell antaa seuraavan virheviestin: unexpected indent
Unexpected indent = Odottamaton sisennys
Expected an indented block = Odotettiin sisennettyä lohkoa
Python on kieli joka perustuu kokonaan sisennykseen. Jos rivin alussa on ylimääräisiä välilyöntejä, tulee unexpected indent. Jos Ehtolauseen jälkeisiä rivejä ei ole sisennetty, tulee expected indent
No ei se nyt kokonaan sisennykseen perustu, on siellä muitakin sääntöjä kuten muissakin kielissä. Myös puolipiste on tuettu, jolloin voi kirjoitella useampia käskyjä samalle riville.
Aihe on jo aika vanha, joten et voi enää vastata siihen.