Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Vraag over python  (gelezen 1124 keer)

Offline Korsou

  • Lid
Vraag over python
« Gepost op: 2012/02/24, 10:26:56 »
Hallo,

Voor school kreeg ik deze opdracht:

'Vraag aan gebruiker om een getal kleiner dan 20 (net zo lang totdat er een getal kleiner dan 20 komt.) Print het getal vervolgens uit.'

Bij mij ging gelijk het lampje branden om gebruik te maken van de 'while' instructie.
Het volgende had ik bedacht:

g=input('getal?')
while g<20:
    print g
    g = g+20

Alleen het script stopt als er een groter getal wordt ingevuld dan 20. Hoe zorg ik er nu voor met de instructie 'while' dat de vraag continue wordt herhaald?

Ik bedank u alvast voor uw antwoord.

Met Vriendelijke Groet,

Korsou (beginner met python)

Offline MKe

  • Lid
Re: Vraag over python
« Reactie #1 Gepost op: 2012/02/24, 10:37:48 »
Je logica klopt niet, de invoer moet in een infinite loop zitten:
While True:  # infinite loop
    g=input('getal?')    # vraag om getal
    if g<20:               # kijk of het kleiner is dan 20
        break              # zo ja, breek uit de loop
    else:                   # 20 of hoger, dan melding geven en nog een keer vragen
        print 'Getal is te hoog'
print g
Deze code vangt overigens niet af dat de gebruiker iets anders kan intypen dan een getal. Als je een string intyped crashed hij. Maar dat mag je zelf oplossen.
« Laatst bewerkt op: 2012/02/24, 11:40:27 door MKe »
Mijn blokkendoos blog: http://mke21.wordpress.com/

Re: Vraag over python
« Reactie #2 Gepost op: 2012/02/24, 10:45:15 »
Er gebeurt niks omdat de loop (en dus de print) alleen uitgevoerd word als uw getal kleiner is dan 20. En als het kleiner is dan 20, telt ge er gewoon 20 bij op, wat niet de vraag is. De opdracht is om te blijven vragen naar user input zolang deze groter is dan 20.

De while-loop is in ieder geval al de goede keuze, het probleem is dat ge 1 keer de gebruiker voor een getal vraagt, die moet dus in de loop gestoken worden zodat hij het blijft herhalen.

Het is trouwens ook beter om met raw_input() te werken in Python 2 in plaats van input(), en int(raw_input("")) om er een integer van te maken.

getal = 21 # Getal hoger dan het gewenste om de loop te starten
while getal > 20:
    getal = int(raw_input("Geef een getal kleiner dan 20: "))
print "Het gegeven getal is:", getal
Of:
getal = int(raw_input("Geef een getal kleiner dan 20: "))
while getal > 20:
    getal = int(raw_input("Onjuiste invoer, het getal moet kleiner zijn dan 20. Prober opnieuw: "))
print "Het gegeven getal is:", getal

Dit doet wel geen foutafhandeling. Wat gebeurt er als de gebruiker iets ingeeft wat geen getal is?

Re: Vraag over python
« Reactie #3 Gepost op: 2012/02/24, 12:21:32 »
while (getal = input("Geef een getal kleiner dan 20: ")) > 20:
    print "Dit getal is te groot!\n"

(Ik hoop nu serieus dat een assignment in Python een expressie is, zo niet, dan is mijn gedacht over die taal nog wat verder gevormd...)

UPDATE: (apparently, it isn't... nvm)

UPDATE: bij navraag:

import sys

for line in sys.stdin:
    try:
        number = int(line)
        if number < 20:
            break
        else:
            print "Please give a number less than 20\n"
    except TypeError:
        print "Not a number.\n"
« Laatst bewerkt op: 2012/02/24, 12:51:53 door SeySayux »
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline Korsou

  • Lid
Re: Vraag over python
« Reactie #4 Gepost op: 2012/02/24, 14:09:45 »
Hartelijk bedankt voor de snelle reactie!  :)

Met Vriendelijke Groet,

Korsou