Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: Sanojen kysyminen satunnaisessa järjestyksessä

Otsir [05.12.2013 21:39:42]

#

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?

Macro [05.12.2013 21:47:25]

#

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.

Metabolix [05.12.2013 22:51:57]

#

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

Otsir [10.12.2013 10:46:27]

#

Suurkiitokset Metabolixille vastauksesta. Auttoi eteenpäin.

Vastaus

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

Tietoa sivustosta