Luvun arvaus on hyvin tavallinen harjoitusohjelma uutta ohjelmointikieltä opiskeltaessa. Ohjelma kertoo joka arvauksen jälkeen, onko luku suurempi, pienempi vai juuri sama kuin arvattava luku. Ohjelma päättyy, kun käyttäjä arvaa luvun oikein.
Tässä on Pythonilla toteutettu luvunarvaus, jossa on kuitenkin muuan erikoisuus. Oikeaa lukua ei näet ole valittu arvauksen alussa, vaan ohjelma muuttaa lukua aina käyttäjän arvauksen mukaan niin, että arvaaminen kestää mahdollisimman kauan. Etevinkään arvaaja ei saa milloinkaan lukua selville nopeammin kuin seitsemällä arvauksella. Varsin kiero ohjelma siis!
# -*- coding: latin1 -*-
print 'Arvaa luku väliltä 1 - 100!'
ala = 1
yla = 100
oikein = 0
# kysellään lukuja, kunnes käyttäjä arvaa "oikean" luvun
while not oikein:
luku = int(raw_input())
# jos luku on selvästi rajojen ulkopuolella
if luku > yla:
print 'Liian suuri.'
elif luku < ala:
print 'Liian pieni.'
else:
# jos rajojen välissä on enää yksi luku, ja arvattu
# luku on se, on pakko tunnustaa luku oikeaksi
if yla > luku and ala < luku and yla - ala == 2:
print 'Oikein arvattu!'
oikein = 1
# muussa tapauksessa muutetaan rajoja niin, että
# mahdollisimman paljon lukuja jää vielä jäljelle
elif yla - luku > luku - ala:
print 'Liian pieni.'
ala = luku
else:
print 'Liian suuri.'
yla = lukuAntti Laaksonen kirjoitti:
Varsin kiero ohjelma siis!
Minä en katso kieroon, kuten Runtelin kaveri kerran sanoi :P
äh, ongelmia tagien kanssa eikä voi muokata
hieno ohjelma! juuri tälläsiä python "ohjelmaesimerkkejä" olen etsiskellyt
:D
lainaus:
hieno ohjelma!
:D
joo aika näppärä
Private Sub Form_Load()
MsgBox "Arvaa luku väliltä 1 - 100!"
ala = 1
yla = 100
oikein = 0
' kysellään lukuja, kunnes käyttäjä arvaa "oikean" luvun
While Not oikein
luku = Int(InputBox("Arvaa luQ."))
' jos luku on selvästi rajojen ulkopuolella
If luku > yla Then
MsgBox "Liian suuri."
ElseIf luku < ala Then
MsgBox "Liian pieni."
Else
' jos rajojen välissä on enää yksi luku, ja arvattu
' luku on se, on pakko tunnustaa luku oikeaksi
If yla > luku And ala < luku And yla - ala = 2 Then
MsgBox "Oikein arvattu!"
oikein = True
' muussa tapauksessa muutetaan rajoja niin, että
' mahdollisimman paljon lukuja jää vielä jäljelle
ElseIf yla - luku > luku - ala Then
MsgBox "Liian pieni."
ala = luku
Else
MsgBox "Liian suuri."
yla = luku
End If
End If
Wend
End SubPorttasin VB:lle \o/
aika hyvä. porttasin qbeelle.
Pythonissa vertailuoperaattorit voi ketjuttaa matematiikasta tuttuun tapaan. Tällöin koodivinkin rivi
if yla > luku and ala < luku and yla - ala == 2:
voidaan yksinkertaistaa muotoon
if ala < luku < yla and yla - ala == 2:
Lisätietoa:
https://docs.python.org/2/reference/expressions.
https://docs.python.org/3/reference/expressions.
Aihe on jo aika vanha, joten et voi enää vastata siihen.