if-Abfrage

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
D0mino
User
Beiträge: 7
Registriert: Sonntag 19. März 2006, 13:10

Hallo, ich programmier gerade ein bisschen und habe eine Frage.
Ich möchte, dass der Benutzer eine Zahl eingibt. Wenn diese Zahl 0 ist, möchte ich, dass so etwas wie "keine 0 eingeben, nochmal" oder so ausgegeben wird. Das möchte ich als Schleife haben, sodass der Benutzer 100x 0 eingeben kann und jedes Mal wieder die eingabe wiederholt wird. Wie kann ich das machen? Bis jetzt habe ich es so:

Code: Alles auswählen

    print
    zaehler1=input()
    print
    if (zaehler1==0):
        print "Bitte keine 0 eingeben!"
        print
        print "Wiederholen Sie bitte die Eingabe :"
        print
        zaehler1=input()
    print
Da wird die Eingabe aber eben nur einmal wiederholt und wenn der benutzer jetzt nochmal eine 0 eingibt, schmiert das Programm ab.
Danke schonmal!
lemmi
User
Beiträge: 19
Registriert: Dienstag 28. März 2006, 17:45

du brauchst da ne schleife

die frage ist, soll das was danach kommt nur einmal oder mehrmals.
ich bin auch noch ganz am anfang und hoffe, dass ich hier keinen all zu großen misst verzapf:

Code: Alles auswählen

done = False
while done == False:
   zaehler1=input()
   if zaehler1 == 0:
      print "bitte nochmal eingeben"
   else:
      <dein algorithmus>
      done = True
verbessert mich bitte ebenfalls, falls hier etwas nicht stimmt.
D0mino
User
Beiträge: 7
Registriert: Sonntag 19. März 2006, 13:10

Ah, super, danke Lemmi! Das ist genau das was ich brauche! Diese "done true / false" - geschichte ist mir zwar völlig neu, aber es funktioniert.
Also das mit dem done ist ja praktisch wie eine Klammer um die ganze Sache. Als done=false wird dann zaehler1==0 beschrieben und wenn das der Fall ist, geht es in die Schleife rein. Wenn zaehler1 irgendwas anderes ist, ist das done=true und es geht normal mit dem programm weiter... richtig?
Also, danke nochmal :D
icepacker
User
Beiträge: 49
Registriert: Dienstag 15. November 2005, 18:48

noch ein bisschen kürzer:

Code: Alles auswählen

while True:
   zaehler1 = raw_input()
   if zaehler1 == 0:
      print "bitte nochmal eingeben"
   else:
      <dein algorithmus>
      break
ubuntu linux !!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

icepacker hat geschrieben:noch ein bisschen kürzer:

Code: Alles auswählen

while True:
   zaehler1 = raw_input()
   if zaehler1 == 0:
      print "bitte nochmal eingeben"
   else:
      <dein algorithmus>
      break
Wird wohl kaum gehen, da raw_input() immer Strings ausgibt, und ein string ist nie == 0. Aber das ist ein geringes Problem.

Ich würde es so machen (wenn du nur Zahlen annehmen willst, bei Buchstaben sieht es noch etwas anders aus):

Code: Alles auswählen

while True:
    zaehler1 = raw_input()
    try:
        zaehler1 = int(zaehler1)
        
        if zaehler1 == 0:
            print "bitte nochmal eingeben"
        else:
            print 'out'
            break
        
    except ValueError:
        print "bitte nochmal eingeben"
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

oder so:

Code: Alles auswählen

while True:
   zahl=raw_input('Zahl eingeben:')
   if zahl=='0':
      print 'Bitte nochmal eine Zahl eingeben'
   else:
      break
mfg

Thomas :-)
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Noch kürzer:

Code: Alles auswählen

zahl = 0
while zahl <= 0:
    try:
        zahl = int(raw_input("Bitte positive Zahl eingeben:"))
    except ValueError:
        pass
--- Heiko.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Naja sehr viel kürzer ist dein Code nicht als meiner! :lol:
mfg

Thomas :-)
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Doch, denn er macht gleich zwei Dinge mehr: 1) gucken ob es tatsächlich eine Zahl ist die eingegeben wird, 2) gucken ob die Zahl null oder negativ ist (was ja auch keinen Sinn macht für einen Schleifenzähler)...
--- Heiko.
D0mino
User
Beiträge: 7
Registriert: Sonntag 19. März 2006, 13:10

Klasse, danke für die vielen Vorschläge! :D
Antworten