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)"
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)"
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.