Nieuws:

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

Auteur Topic: While & List  (gelezen 1082 keer)

Offline Korsou

  • Lid
While & List
« Gepost op: 2012/03/13, 17:53:19 »
Hallo iedereen,

Hierbeneden staan enkele stappen van een programma dat ik wil programmeren. Ik ben er nu al een tijdje meebezig, maar veel vorderingen maak ik niet. Het stukje code dat ik namelijk geschreven heb werkt enigzins naar behoren, maar als ik bijv. 3 invul. Vraagt het programma niet om stap 3. Er zit dus een fout in de while functie.

Heeft iemand enig idee hoe ik dit oplos?

Stap 1:  Het programma vraagt de gebruiker om een lijst met namen in te voeren.
Stap 2:  Het programma controleert of de ingevoerde namen allemaal van het type string zijn.
Stap 3:  Zijn de ingevoerde namen van het type float of integer, dan vraagt hij de gebruiker om opnieuw een lijst met namen in te voeren.
Stap 4:  Als de ingevoerde waarden kloppen met de voorwaarden van het programma, gaat het naar de volgende stap.

Met Vriendelijke Groet,

Korsou (beginner met python)


Re: While & List
« Reactie #1 Gepost op: 2012/03/13, 18:29:53 »
Post hier even de code, dan kunnen we kijken waar het fout loopt.

Offline Korsou

  • Lid
Re: While & List
« Reactie #2 Gepost op: 2012/03/14, 17:02:19 »
lijst1 = str[raw_input("geef een lijst met namen")]
def lijsten(lijst1):
        resultaat = lijst1.count(lijst1)
        return resultaat

Deze code heb ik geschreven. De while functie heb ik er epxress uitgehaald. Nu is mijn vraag aan u: 'Hoe zorg ik ervoor met behulp van de while functie dat deze vraag net zolang blijft herhalen tot de namen van het type string zijn?'

Offline MKe

  • Lid
Re: While & List
« Reactie #3 Gepost op: 2012/03/14, 22:41:10 »
Eh, dit gaat toch niet werken? Je kunt toch geen list invoeren met rawinput? Je moet dus een lus maken waar steeds opnieuw naar een nieuwe naam wordt gevraagd en die appenden aan een list of een delimiter vragen (b.v. stellen dat de namen worden ingevuld met steeds een komma ertussen) en dan splitsen. Op deze manier krijg je nooit een list. Met raw input is de ingevoerde waarde volgens mij altijd een string. Je kunt wel controleren of de invoer uit alleen een getal bestaat:
if variabel == str(int(variabel)):

Offline _Walter_

  • Lid
Re: While & List
« Reactie #4 Gepost op: 2012/04/11, 23:09:57 »
Het kan op duizenden manieren, hier een voobeeld:


#! /usr/local/env python

# namen invoeren

namen = []
print ('U gaat namen in voeren, ga verder naar de volgende stap\
 met q of alleen een enter.')
while True:
    naam = raw_input('Voer naam in: ')
    if naam == '' or naam == 'q' or naam == 'Q':
        break
   
    # controleer of float of integer
    try:
#probeer er een float van te maken, dit kan ook met getallen
# kommainvoer wordt vervangen voor punt for floatconversie anders
# worden kommagetallen wel meegenomen
        float(naam.replace(',','.'))
        print('U heeft een getal ingevoerd, invoer wordt overgeslagen')
        print('U voerde {0} in.\n'.format(naam))
        toevoegen = False  # later niet toevoegen
    except ValueError:
        toevoegen = True  # later wel toevoegen, het is dus een string-string
   
    if toevoegen:
        namen.append(naam)  # naam toevoegen aan lijst

# verdergaan met volgende stap

#overzichtje om te kijken of het is gelukt
print ('De volgende namen werden ingevoerd:\n')
for naam in namen:
print naam
« Laatst bewerkt op: 2012/04/11, 23:34:24 door _Walter_ »