Hallo!
Ich hab folgende Frage zu While- und For-Schleifen: Warum muss die Variable (im Unterricht nennen wir sie a) im Verlauf der Schleife ihren Wert ändern? Erst sagt man ja a=0 am Anfang der Schleife und nach der Entscheidung in der Schleife muss man ja immer a=a+1 (oder etwas ähnliches) sagen. Warum eigentlich?
Weil a ist ja eigentlich auch nicht der eingegebene Wert, der hat bei uns immer ne andere Bezeichnung...
Danke für die Hilfe!
While- und For-Schleifen
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Der Wert einer Variable in einer while-Schleife muß den Wert nicht ändern. Mach mal:
und guck was passiert. Wahrscheinlich nicht das was Du denkst.
macht wahrscheinlich schon eher das was Du denkst.
Die while-Schleife in Python entspricht (ungefähr) dem was man in anderen Programmiersprachen als Zählschleife bezeichnet, auch dort muß man explizit angeben wenn irgendwas mit dem Namen aus der Bedingung passieren soll, so dass die Bedingung irgendwann mal den booleschen Zustand ändert.
Eine for-Schleife in Python ist eine Besonderheit, und zwar ist es keine Zählschleife, sondern eine Kurzschreibweise für eine Iterator-Schleife:
iteriert über die Elemente des Container (1,2,3,4,5), was zufällig ein Tupel ist, und über Tupel kann man iterieren. Folgendes geht nämlich zum Beispiel nicht:
Über Integer kann man nicht iterieren. Eine Iteratorschleife hat keine explizite Abbruchbedingung wie man sieht (in der Zählschleife while ist es eben das a < 10), sondern die Iteration hört auf wenn es keine Elemente in dem Objekt mehr gibt über die man noch laufen muß. Du kannst in so einer Schleife die Variable die die Objekte aufnimmt über die iteriert wird beliebig ändern, da es eben im Gegensatz zur Bedeutung von a keine Bedeutung für die (implizite) Abbruchbedingung hat.
Hmm... So, ich hoffe das erklärt den Unterschied so ein bisschen... Für alles andere: les ein Buch über "Einführung in die Programmierung," Schleifen sind wahnsinnig wichtige Konzepte die man verstehen muß, damit man überhaupt anfangen kann zu programmieren...
Code: Alles auswählen
a = 1
while a <= 10:
print "Ich bin jetzt in der Schleife:", a
Code: Alles auswählen
a = 1
while a <= 10:
print "Ich bin jetzt in der Schleife:", a
a += 1
Die while-Schleife in Python entspricht (ungefähr) dem was man in anderen Programmiersprachen als Zählschleife bezeichnet, auch dort muß man explizit angeben wenn irgendwas mit dem Namen aus der Bedingung passieren soll, so dass die Bedingung irgendwann mal den booleschen Zustand ändert.
Eine for-Schleife in Python ist eine Besonderheit, und zwar ist es keine Zählschleife, sondern eine Kurzschreibweise für eine Iterator-Schleife:
Code: Alles auswählen
for i in (1,2,3,4,5):
print "Ich bin:", i
Code: Alles auswählen
for i in 1:
print "Geht nicht! Kommt Fehler vor mir. ;-)"
Hmm... So, ich hoffe das erklärt den Unterschied so ein bisschen... Für alles andere: les ein Buch über "Einführung in die Programmierung," Schleifen sind wahnsinnig wichtige Konzepte die man verstehen muß, damit man überhaupt anfangen kann zu programmieren...
--- Heiko.
Hmmm aha, das ist ja alles ganz schön kompliziert, ich bin ja nur son kleiner schüler, der seit nem halben Jahr den Informatikkurs macht...
Aber vielen Dank, ich hab alle deine Beispiele ausprobiert, das ist interessant!
Guck mal hier, das haben wir mal im Unterricht gebastelt:
1. Frage: Hat das erste "code=input()" zwei Funktionen? 1. Dass man was eingeben kann und 2. dass das eingegebene gleichzeitig die variable "code" zugeschrieben wird?
2. Frage: Warum taucht in der Schleife plötzlich "anzahl=anzahl+1" auf? Die Variable Anzahl wurde doch noch gar nicht benutzt, hat also noch gar keinen Wert zugewiesen bekommen und deshalb kann der Wert doch auch nicht um 1 erhöht werden. Oder wie?
Der Rest ist klar
Tut mir leid, dass das für euch son Pullerkram ist, aber das Forum hier ist ein Hort des Wissens für mich!
Auf jeden Fall vielen Dank für die Hilfe!
Aber vielen Dank, ich hab alle deine Beispiele ausprobiert, das ist interessant!
Guck mal hier, das haben wir mal im Unterricht gebastelt:
Code: Alles auswählen
#!/usr/bin/Python
anzahl=1
schluessel=322
print "Zugangscode (3-stellig) eingeben : ",
code=input()
while (code!=schluessel):
print "FALSCHER ZUGANGSCODE"
anzahl=anzahl+1
if (code<schluessel):
print "zu klein..."
else:
print "zu groß..."
print "Dein",anzahl,". Versuch . ",
code=input()
print "ZUGANG GEWAEHRT"
2. Frage: Warum taucht in der Schleife plötzlich "anzahl=anzahl+1" auf? Die Variable Anzahl wurde doch noch gar nicht benutzt, hat also noch gar keinen Wert zugewiesen bekommen und deshalb kann der Wert doch auch nicht um 1 erhöht werden. Oder wie?
Der Rest ist klar
Tut mir leid, dass das für euch son Pullerkram ist, aber das Forum hier ist ein Hort des Wissens für mich!
Auf jeden Fall vielen Dank für die Hilfe!
Zuletzt geändert von D0mino am Sonntag 19. März 2006, 13:53, insgesamt 1-mal geändert.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Zu aller erst, schau dir mal das an: http://www.python-forum.de/faq.php#21
Zum Thema input(): http://wiki.python.de/Thema_Sicherheit#InputRawInput
EDIT:
Zur Frage 1: Ja
Zur Frage 2: Oben wird doch anzahl = 1 gesetzt...
Zum Thema input(): http://wiki.python.de/Thema_Sicherheit#InputRawInput
EDIT:
Zur Frage 1: Ja
Zur Frage 2: Oben wird doch anzahl = 1 gesetzt...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Hey, das habe ich auch noch nicht gesehenjens hat geschrieben:Zu aller erst, schau dir mal das an: http://www.python-forum.de/faq.php#21
Achja, was mir noch auffällt: normalerweise macht man in Python keine Klammern um Bedingungen:
So wird aus:
Code: Alles auswählen
while (code!=schluessel):
Code: Alles auswählen
while code != schluessel:
Code: Alles auswählen
if (code<schluessel):
Code: Alles auswählen
if code < schluessel:
Code: Alles auswählen
anzahl=anzahl+1
Code: Alles auswählen
anzahl += 1
Code: Alles auswählen
schluessel=322
Code: Alles auswählen
schluessel = 322
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice