While Schleife mit or

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
samid
User
Beiträge: 60
Registriert: Samstag 28. April 2012, 08:40

Hallo Zusammen,

kann mir jemand erklären wieso die Schleife bei der Änderung der Variable b nicht unterbricht:

Code: Alles auswählen

a = 0
b = True
while a < 10 or b == True:
   a += 1
   if a == 5:
      b = False
Danke für die Antworten.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Weil a = 5 < 10 noch immer erfüllt ist. Ein Test der Form `x == True` ist übrigens immer unnötig, dann kannst du gleich `x` schreiben.
Das Leben ist wie ein Tennisball.
samid
User
Beiträge: 60
Registriert: Samstag 28. April 2012, 08:40

OK und wie formuliere ich dann die Schleife so um, dass das Programm entweder bei der einen Anweisung oder bei der anderen Anweisung (je nachdem welche schneller eintrifft) die Schleife unterbricht ohne das "break" Argument in der Schleife zu verwenden?

Danke.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

In diesem Fall einfach mit and. Oft bietet es sich auch an zu formulieren in welchen Fällen die Schleife verlassen werden soll und diesen Ausdruck dann zu negieren.
Das Leben ist wie ein Tennisball.
karolus
User
Beiträge: 141
Registriert: Samstag 22. August 2009, 22:34

Hallo

Code: Alles auswählen

or → and
Karolus
samid
User
Beiträge: 60
Registriert: Samstag 28. April 2012, 08:40

Alles klar. Danke euch.
BlackJack

@samid: Wobei man so etwas als ``for``-Schleife ausdrücken würde, die man bei eintreten einer bestimmten Bedingung dann mit einer ``break``-Anweisung verlässt:

Code: Alles auswählen

for a in xrange(10):
    if a == 5:
        break
Wobei die Abbruchbedingung für etwas stellvertretend für eine dynamischere Bedingung steht. Denn wenn man tatsächlich immer bei 5 abbricht, hätte man die Schleife auch gleich nur bis dorthin laufen lassen können.
Antworten