Iterate and apply conditional criteria. For interactive reading and executing code blocks and find b03-pyloop.ipynb, or install Python and JupyterLab locally.
Python bietet zwei grundlegende Arten von Schleifen durch Objekte oder Funktionen: die for und die while Schleifenaussagen. Beide Schleifentypen haben zusätzliche Optionen und können mit bedingten Aussagen kombiniert werden. Bedingte Aussagen bewerten booleanArgumente (True/False) unter Verwendung der Keywords if: ... else: .... Dieser Abschnitt führt die beiden Schleifentypen und bedingten Aussagen als integrale Teile von Schleifen ein.
Watch this section as a video
Watch this section as a video on the @Hydro-Morphodynamics channel on YouTube.
Bedingte Aussagen (IF - ELSE)¶
Bedingte Aussagen mit einem if-Keyword, gefolgt von einer Testbedingung (z.B. variable >= 2) und Aktion zu erreichen, wenn die Testbedingung True (boolean-Testergebnis) ist. Die bedingte Aussage kann durch die elif (else if) und/oder else Keywords erfolgen, die alternative Tests darstellen, falls die if-Testbedingung False liegt. Wenn die if-Anweisung jedoch True lautete, wird keine der folgenden Aussagen ausgewertet.
variable_2_test = "ice cream"
if "cream" in variable_2_test:
print("It's creamy, for sure.")
elif "ice" in variable_2_test:
print("It's cold, ice-cold cream.")
else:
print("Anything but ice cream.")It's creamy, for sure.
Jeder Bediener kann in der Testbedingung (siehe operators) verwendet werden und Bedingungen können auch geschachtelt werden.
number_of_scoops = 3
if number_of_scoops <= 0:
print("Why? How can you?")
elif number_of_scoops < 4:
if number_of_scoops == 1: # this is a nested if-statement
print("One is better than nothing.")
else:
print("That is reasonable.")
else:
print("A lot. Still reasonable. Maybe.")That is reasonable.
for¶
for Schleifen dienen der sequentiellen Iteration durch Objekte wie Listen oder Arrays. for Schleifen können auch am Ende mit else-Anweisungen ergänzt werden (je nachdem, was...).
for e in range(0,8,2):
print("e is %d now." % e)
flavors = ["chocolate", "bread", "cherry"]
for index in range(len(flavors)):
print(flavors[index])
else:
print(" --- end of first loop.")
# produces the same
for e in flavors:
print(e)e is 0 now.
e is 2 now.
e is 4 now.
e is 6 now.
chocolate
bread
cherry
--- end of first loop.
chocolate
bread
cherry
In vielen Fällen ist es nützlich, nicht nur auf der Iterationsnummer (ein Inkrementierung Integer-Wert) oder den Elementen einer Liste (z.B. ein String-Wert) zu iterieren, sondern beide gleichzeitig. Sowohl die Iterationsschrittnummer als auch die Listenelemente können mit der enumeration Methode aufgerufen werden:
for iteration_step, list_element in enumerate(flavors):
print("The list element {0} is at position number {1}.".format(list_element, str(iteration_step)))The list element chocolate is at position number 0.
The list element bread is at position number 1.
The list element cherry is at position number 2.
while¶
while Schleifen laufen bis eine Testbedingung erfüllt ist. Ähnlich wie bei der if-Anweisung kann die Testbedingung aus nur einer Variablen oder einem Ausdruck einschließlich operators (z.B. while a > b) bestehen. Um eine Variable innerhalb einer while-Schleife zu ändern, verwenden Sie += (Add-Menge),-= (subtract-Menge),*= (multiply with), oder /= (dividiert durch). Auch while Schleifen können mit else-Anweisungen ergänzt werden.
count = 10
while (count > 7):
count -= 1
print("Count down %d " % count)
else:
print("Mission aborted.")
count = 0
while True:
print("Count up: %d " % count)
count += 1 # Replaces count = count + 1 - also works with -=, *= and /=
if count > 3:
breakCount down 9
Count down 8
Count down 7
Mission aborted.
Count up: 0
Count up: 1
Count up: 2
Count up: 3
Beispiel¶
Verwenden Sie diesen Code-Block, um mit Datentypen zu praktizieren, forschleifen und bedingte if-Anweisungen, indem Sie die Variablen scoops und favorite_flavor ändern. Beachten Sie die Implementierung von try und except-Anweisungen, dass die von Ihnen angegebene Anzahl von scoops oder favorite_flavor das Skript nicht abstürzt.
scoops = 2 # re-define the number of scoops
favorite_flavor = "vanilla" # choose your favorite flavor
size_scoops = {1: "small", 2: "medium", 3: "this is too much ice cream"}
price_scoops = {1: "3 dollars", 2: "5 dollars", 3: "your health"}
print("Hi,\nI want %d scoop-s in a waffle, please." % scoops)
try:
size = " " + str(size_scoops[scoops])
price = str(price_scoops[scoops])
except KeyError:
size = "n unavailable number of scoops"
price = "not defined"
print("My pleasure to serve you. You have chosen a" + size + " ice cream. The price is " + price + ".")
print("Let me guess your favorite flavor. Say stop when I'm correct.")
for f in flavors:
print("I guess your favorite flavor is %s." % f)
if f == favorite_flavor:
print("Stop, that\'s it!")
if f == "bread":
print("Sorry, this is not a bakery.")
break
Hi,
I want 2 scoop-s in a waffle, please.
My pleasure to serve you. You have chosen a medium ice cream. The price is 5 dollars.
Let me guess your favorite flavor. Say stop when I'm correct.
I guess your favorite flavor is chocolate.
I guess your favorite flavor is bread.
I guess your favorite flavor is cherry.
