Hei. Aloin ohjelmoida eilen. Käytän Pythonia (v. 2.7.6). Joskus hyvin kauan sitten tein pieniä kokeiluja Qbasicilla, mutta muuten kokemusta ohjelmoinnista ei ole. Nyt tavoitteena on tehdä ohjelma, jolla voi harjoitella vieraan kielen sanoja.
Tämän verran olen tähän mennessä saanut aikaiseksi:
print "Tervetuloa harjoittelemaan. Käytä vain pieniä kirjaimia." print pisteet = 0 sana1 = raw_input ("der Wortschatz | ") if sana1 == "sanasto" or sana1 == "sanavarasto": print "Oikein!" pisteet = pisteet +1 else: print "Väärin!" print sana2 = raw_input ("erinnern | ") if sana2 == "muistaa": print "Oikein!" pisteet = pisteet +1 else: print "Väärin!" print sana3 = raw_input ("das Schicksal | ") if sana3 == "kohtalo": print "Oikein!" pisteet = pisteet +1 else: print "Väärin!" print sana4 = raw_input ("das Gedächtnis | ") if sana4 == "muisti": print "Oikein!" pisteet = pisteet +1 else: print "Väärin!" print sana5 = raw_input ("vergleichen | ") if sana5 == "verrata": print "Oikein!" pisteet = pisteet +1 else: print "Väärin!" print print "Oikeita vastauksia:", pisteet if pisteet == 0: print "Kaikki väärin!" elif pisteet == 1: print "Vain yksi oikein!" elif pisteet > 1 and pisteet < 5: print "Kelpo tulos!" elif pisteet == 5: print "Kaikki oikein!"
Pari kysymystä.
1) Mikä olisi yksinkertaisin tapa saada sanojen esiintymisjärjestys satunnaiseksi, mutta kuitenkin niin, että kutakin sanaa kysytään vain kerran?
2) Kun kaikki sanat on kertaalleen kysytty, kuinka saan ohjelman kysymään – edelleen satunnaisessa järjestyksessä – uudestaan ne sanat, joihin annettiin ensimmäisellä kerralla väärä vastaus?
1. Luo kaikista sanoista taulu. Voit sekoittaa ne shuffle-funktiolla. Sitten vain luot while-loopin, joka kysyy sanoja kunnes käyttäjä syöttää esimerkiksi "lopeta".
2. Voit luoda tyhjän taulun, johon lisäät aina sanan jonka käyttäjä syöttää väärin. Kun kaikki ykköslistan sanat on käyty läpi, kysy väärinarvattujen sanojen listasta uudelleen.
Ehkä olisi selvempää puhua Pythonin termeillä. Macro ehkä ajatteli listaa (list). Toinen vaihtoehto olisi sanakirja (dict).
#!/usr/bin/python2 # -*- coding: utf8 -*- import random sanakirja = { "erinnern": ["muistaa"], "der Wortschatz": ["sanasto", "sanavarasto"], } sanat = list(sanakirja.keys()) while len(sanat) > 0: uudestaan = [] random.shuffle(sanat) for sana in sanat: vastaus = raw_input("%s | " % sana) if vastaus in sanakirja[sana]: print "Oikein!" else: print "Väärin!" uudestaan.append(sana) print "Tulos: %d/%d" % (len(sanakirja) - len(uudestaan), len(sanakirja)) sanat = uudestaan
Suurkiitokset Metabolixille vastauksesta. Auttoi eteenpäin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.