1. Schleifen
Wie die meisten Programmiersorachen gibt es in Python die Möglichkeit, Dinge zu wiederholen.
Methode 1: wiederhole 5 mal…
Kopiert Euch dieses Stück Code und führt es aus:
for x in range(6):
print(x)
else:
print("Endlich fertig!")
Diese Schleifen lassen sich auch „schachteln“:
adj = ["red", "big", "tasty"]
fruits = ["apple", "banana", "cherry"]
for x in adj:
for y in fruits:
print(x, y)
Methode 2: „wiederhole solange bis“
Natürlich kann man unser erstes Beispiel auch als while-Schleife darstellen:
x=0
while (x<6):
print(x)
x = x + 1
else:
print ("Endlich fertig!")
Und jetzt ein etwas längeres Stück Code. Einfach mal ausprobieren:
import random
n = 20
rate_mal= int(n * random.random()) + 1
guess = 0
while guess != rate_mal:
guess = int(input("Neue Zahl: ") )
if guess > 0:
if guess > rate_mal:
print ("Zahl zu groß" )
elif guess < rate_mal:
print ("Zahl zu klein" )
else:
print ("Schade, Sie geben also auf!" )
break
else:
print ("Glückwunsch! Das war's!")
2. Datentypen und Felder /Listen
Wir haben anfangs schon ein Feld benutzt, ohne es zu merken: das Ding in den eckigen Klammern
fruits = ["apple", "banana", "cherry"]
Beispiel: das Tic Tac Toe-Feld als Liste .
Ein TicTacToe-Feld kann man sich ja auch als Liste von Zahlen vorstellen:
in Python würde dieses Feld so aussehen:
spielfeld = [" ",
"1","2","3",
"4","5","6",
"7","8","9"]
…oder ohne Zeilenumbrüche geschrieben:
spielfeld = [" ","1","2","3","4","5","6","7","8","9"]
Jedes Element eines Feldes hat eine Indexnummer, das erste hat die Indexnummer 0. Deshalb können wir unser Spielfeld so ausdrucken:
spielfeld = [" ","1","2","3","4","5","6","7","8","9"]
# Spielfeld ausgeben
print (spielfeld[1] + "|" + spielfeld[2] + "|" + spielfeld[3] )
print (spielfeld[4] + "|" + spielfeld[5] + "|" + spielfeld[6] )
print (spielfeld[7] + "|" + spielfeld[8] + "|" + spielfeld[9] )
So, un jetzt können wir statt der Zahlen einen aktuellen Spielstand in das Feld eingeben (bestehend aus X, O und noch unbesetzten Feldern):
spielfeld = [" ","X"," ","X"," ","O"," ","X"," ","O"]
# Spielfeld ausgeben
print (spielfeld[1] + "|" + spielfeld[2] + "|" + spielfeld[3] )
print (spielfeld[4] + "|" + spielfeld[5] + "|" + spielfeld[6] )
print (spielfeld[7] + "|" + spielfeld[8] + "|" + spielfeld[9] )
Ihr seht: die Indexzahlen funtionieren weiterhin; das zweite Element der Liste ist ein „X“…
Stellt Euch vor, wir haben ein größeres Spielfeld (z. B. für Vier gewinnt)
—> Das in einem Feld abzuspeichern wir schnell unübersichtlich…
Lösung: zweidimensiomale Felder.
Für Vier gewinnt wäre das ein Feld von 10 x 10, und es gibt folglich auch zwei Indices /wie x und y in einem Koordinatensystem.
Die allgemeine Schreibweise Feld[0,0] spricht das Feld in der linken, oberen Ecke an, die Schreibweise Feld[3,3] das Feld in der Mitte usw. Warum 0 und warum 3 und nicht 4? Ganz einfach, weil bei fast allen Programmiersprachen die Nummerierung bei 0 beginnt und nicht bei 1.
Übertragen auf unser TicTacToe-Beispiel würde das zweidimensionale Feld so aussehen:
feld = [[1, 2, 3], [ 4, 5, 6], [7, 8, 9]]
beziehungsweise
feld = [["X", " ", "X"], ["O","O", " "], [" ", "X", "O"]]
Jetzt sind also die Spilefelder in Zeilen gruppiert. Um ein einzelnes Feld anzusprechen, brauchen wir zwei Indexziffern (also sprich „Zeile“ und „Spalte“:
feld = [["X", " ", "X"], ["O","O", " "], [" ", "X", "O"]]
print (feld[2][2])
Kopiert Euch den Code und führt ihn aus. Welchse Feld wird ausgegeben?
Hier eine bildhafte Repräsentation:
Um das neue Spielfeld komplett auszugeben, brauch Ihr eine geschachtelte Schleife:
feld = [["X", " ", "X"], ["O","O", " "], [" ", "X", "O"]]
for zeile in feld:
for spalte in zeile:
print(spalte,end = " ")
print()
— Ende —
Wer von Euch sich jetzt etwas unsicher/überfordert fühlt, dem oder der würde ich raten, sich mit diesem Python-Tutorial zu beschäftigen:
https://cscircles.cemc.uwaterloo.ca/de/
Hier vor allem die Kapitel 2 und 6
sowie
Hier vor allem Kapitel3, 4 und 9