Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: Merkkien lukumäärän tarkistus

Sivun loppuun

Ariel [05.07.2013 23:12:03]

#

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ä?

tmub [05.07.2013 23:16:34]

#

Tutki aluksi lähemmin miten if-lause toimii pythonissa. http://www.tutorialspoint.com/python/python_if_else.htm

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.

The Alchemist [05.07.2013 23:18:52]

#

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).

Ariel [05.07.2013 23:26:35]

#

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

The Alchemist [05.07.2013 23:41:02]

#

Luehan niitä virheilmoituksia.

Ariel [05.07.2013 23:51:30]

#

Python on paska kieli.

Ei vaan :)


Nukun yön yli ja olen aamulla viisaampi.

The Alchemist [06.07.2013 00:04:20]

#

Olisit selvinnyt ihan vain lukemalla virheilmoituksen. Ei sitten.

tmub [06.07.2013 01:18:57]

#

Olet jo tosi lähellä! Neljännellä rivillä ainakin jotain häikkää :)

Metabolix [06.07.2013 02:05:00]

#

Poista turhat tyhjät rivit ja sisennä koodi oikein.

groovyb [06.07.2013 02:12:03]

#

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.

Ariel [06.07.2013 09:18:35]

#

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.

The Alchemist [06.07.2013 10:05:32]

#

SE KERROTTIIN SIINÄ VIRHEILMOITUKSESSA! Mikä helvetti siinä on niin vaikeaa?

Ariel [06.07.2013 10:30:16]

#

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.

The Alchemist [06.07.2013 11:05:39]

#

Ikään kuin sisennyksestä valittaminen voisi kertoa mistään muusta kuin sisennyksestä?

Virheviesti on kylläkin seuraava:

IndentationError: expected an indented block

Ariel [06.07.2013 11:11:12]

#

Python 3.3.2 Shell antaa seuraavan virheviestin: unexpected indent

fergusq [06.07.2013 12:51:51]

#

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

The Alchemist [06.07.2013 14:37:23]

#

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.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta