Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: Kysyjä

taateli05 [07.06.2015 12:20:24]

#

Auttakaa!!! Teen mini-ohjelman joka kysyy käyttäjältä: Do you like coding? (y/e).

Sen pitäisi mennä niin että sitten jos vastaa "y" niin ohjelma vastaa "Me too!". jos vastaa "e" niin ohjelma vastaa "Okay, i like coding. You should try also." ja jos jotain muuta niin "Invalid Answer! (y/e)!"

Mutta se menee niin että "y": "Me too! Invalid answer! (y/e)" "e": Invalid answer! (y/e) Okay, i like coding. You should try also." jotain muuta: "Invalid answer! (y/e) Invalid answer! (y/e)".

Koodi:

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

word = raw_input("Do you like coding?(y/e):  ")

if word == "y":

    print "Me too!"

else:

    print "Invalid answer! (y/e)"

if word == "e":

    print "Okay, i like coding. You should try also."

else:

    print "Invalid answer! (y/e)"

Antti Laaksonen [07.06.2015 12:26:35]

#

Ongelmana on, että koodissa on kaksi else-osiota, joista toinen aktivoituu varmasti, koska käyttäjän vastaus ei voi olla samaan aikaan "y" ja "e".

Yksi ratkaisu on lisätä kaikki ehdot samaan rakenteeseen näin:

word = raw_input("Do you like coding?(y/e):  ")
if word == "y":
    print "Me too!"
elif word == "e":
    print "Okay, i like coding. You should try also."
else:
    print "Invalid answer! (y/e)"

Chiman [10.06.2015 17:32:58]

#

Antti vastasi jo pätevästi, mutta tarjoan erityisesti laajempia if-elif-elif-else-rakenteita korvaavan dictionary-pohjaisen ratkaisun.

reactions = {'y': 'Me too!', 'e': 'Okay, i like coding. You should try also.'}
word = raw_input('Do you like coding?(y/e):  ')
try:
    print reactions[word]
except KeyError:
    print 'Invalid answer! (y/e)'

Jos reaktioksi haluttaisiin jotain monimukaisempaa, dictin arvoksi voisi sijoittaa esim. viittauksen funktioon, jota kutsuttaisiin arvon tulostamisen sijasta.

Vastaus

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

Tietoa sivustosta