Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Satunnaisluenta tekstitiedostosta

jslogan [23.03.2007 01:54:31]

#

Hei kaikki atk-osaajat!

Toivoisin apua alan jengiltä atk-ongelmaan/kielenopiskelu:

Tarvitsen esim. vieras kieli-suomen kieli -sanapareja satunnaisessa
(random) järjestyksessä tekstitiedostosta (kirjoitan itse).
Eli ohjelma antaa sanan ja saatuaan arvauksen, ohjelma antaa lopuksi
oikean sanan. Ja tietty järkevästi lopettaa myöskin ohjelman.
- millä kielellä (Visual Basic, Java, C++, jne) olisi helpoin?
- varmaan joku reipas osaaja kirjoittaa tälle foorumille myös ohjelmoinnin!
(oma arvio, ettei asia ole hankala.MS xp käytössä.)

Jos/kun saan apua, jo etukäteen KIITOS!

Pekka Karjalainen [23.03.2007 12:37:34]

#

Voisin tehdä tällaisen ohjelman Pythonilla. Oikean ohjelman tekoon ei ole aikaa, joten saat lahjoa jonkun muun tai opetella kieltä itse. Ilmaiseksi ei aina saa mitä toivoo. Annan kuitenkin esimerkin.

http://www.python.org

Lyhyesti: ohjelma lukee sanat.txt-tiedostosta sanaparit ja tallentaa ne dict-tietotyyppiin, eli sanakirjaan. Sieltä tietoa voi hakea merkkijonoavaimen avulla, joka on tässä jokin vieraan kielen sana. Saatu tieto on taas suomenkielinen vastine. Ks. esimerkkitiedosto lopussa.

Sen jälkeen ohjelma arpoo yksi kerrallaan avainsanoja ja tulostaa aina arvotun sanan. Sitten se kysyy arvausta sanan suomennokseksi ja tulostaa oikean vastauksen riippumatta menikö oikein vai väärin.

Ohjelma toimii tekstikonsolista Python-tulkissa ja se loppuu CTRL-C-yhdistelmällä. Sen voi ajaa komentoriviltä tallentamalla sen nimellä sanat.py ja suorittamalla komennon sanat.py, kunhan olet asentanut XP:n Python-paketin ym. osoitteesta. Samaan hakemistoon/kansioon tarvitaan myös sanat sisältävä sanat.txt-tiedosto.

Ohjelmaa voi laajentaa ja parantaa monella tavalla, mutta siihen minulla ei ole valitettavasti aikaa. Ei kannata olettaa, että kukaan, reipaskaan, tekisi ilmaiseksi tällaista. Pieni ohjelma on kuitenkin kyseessä, joten ei se paljoa maksa teettää kunnolla. Tai sitten voit opetella alkeiskurssista vähän Pythonia ja tehdä itse.

Pythonilla voi tehdä myös ikkunoituja sovelluksia. Se on vain sen verran monimutkaisempaa (no, ei kovin paljon, mutta en osaa niitä juttuja ulkoa), ettei minulla tähän hätään ole näyttää esimerkkiä.

Pahoittelen selventävien kommenttien puutetta.

from random import choice

f = open ("sanat.txt", "r")

all_words = {}

for line in f:
    key, word = line.split(":")
    key, word = key.strip(), word.strip()
    all_words[key] = word

keys = all_words.keys()

while 1:
    next_one = choice(keys)
    print "*" * 40
    print next_one
    print "Arvauksesi:",
    guess = raw_input()
    print "Oikein on", all_words[next_one]

Ohjelma tarvitsee seuraavan muotoisen sanat.txt-tiedoston. Jokainen sanapari tulee erottaa yhdellä :-merkillä. Muuten tapahtuu kummia.

a hammer : vasara
bacon : pekoni
a horse : hevonen
to go : mennä
sleepy : uninen

jslogan [25.03.2007 23:27:00]

#

Suuret kiitokset "Kopeekka" -osaajalle saamastani avusta! Yritän mennä annetuilla eväillä pulmassa eteenpäin!

Quirzo [26.03.2007 17:32:55]

#

Visual Basic olisi aika simppeli :)
Suosittelen.
Voin kirjoittaa esimerkkikoodin, tekstitiedostossa voi olla tiedot miten vain, mutta

hammer|vasara
sleepy|uninen

Olisi varmaan paras.

Vastaus

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

Tietoa sivustosta