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 = luku
Antti 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 Sub
Porttasin 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.