Quiz in Python

Entwicklungsumgebung

Wir arbeiten während dem Kurs mit dem Online-Editor Repl.it:

https://repl.it
Wir loggen uns im Kurs gemeinsam mit den Teilnehmer*innen in Repl.it ein und erstellt dort die Projekte.

Wie fuktioniert der Editor?

  1. www.repl.it öffnen und einen Account erstellen
  2. Neues repl erstellen und Python als Sprache auswählen
  3. Einen sinnvollen Namen für das Projekt auswählen

KENNENLERNEN

Vorstellungsrunde mit Programmiererfahrung/Motivation

Ihr stellt euch vor und erzählt, wie ihr zur Hacker School und zum Coden gekommen seid.
Nun die Teilnehmer:
 

  • Wie heißt Du? (Achtet darauf, dass die Kinder sich nur mit Vornamen vorstellen – Datenschutz.)
  • Warum bist Du hier?
  • Hast Du schon mal programmiert?
  • Was willst Du lernen?
Vorstellung interaktiver gestalten? (!Klick mich an!)

In unserem Inspirer Handbuch findet ihr
weitere Spielideen.
Wenn Du die Vorstellung etwas interaktiver gestalten möchtest, empfehlen wir das Spiel “Alle, die”, was im folgenden erklärt wird:

Spielidee und Ziel

  • Wir kommen locker und leicht mit den Teilnehmer*innen ins Gespräch und erfahren, was sie gerne mögen (positiver Beziehungsaufbau).
  • Wir können eine erste Diagnose stellen, was die Schülerinnen und Schüler können, was sie gerne mögen.

Ablauf

  1. Stellt Euch vor die Klasse.
  2. Ein*e Inspirer sagt: “Alle, die”-Frage z.B: “Alle, die Sport in der Freizeit machen?”.
  3. Alle, die sich angesprochen fühlen, stehen von ihrem Platz auf.
  4. Die*der Inspirer stellt Rückfragen und kommt ins Gespräch mit den Teilnehmer*innen, z.B. “Cool, du in der ersten Reihe: Wie heißt du? [Antwort] Welchen Sport machst du denn gerne? [Gespräch entsteht] Super und du in der letzten Reihe…”.
  5. Die*der Inspirer sagt: "Alle wieder setzen".
  6. Die*der Inspirer stellt die nächste Frage: z.B. “Alle, die gerne Spiele auf dem Handy oder Computer spielen!”
  7. Siehe 3.-5.
  8. Spielt das Ganze etwa 5 min (nach Gefühl)

 

Sammlung möglicher Fragen (!Klick mich an!)

Diese Sammlung kann gern erweitert oder angepasst werden.

 

IT/Programmieren

  • Wer hat schon mal programmiert?
  • Wer kann sich vorstellen etwas mit Programmieren und IT zu machen?

 

Hobbies

  • Wer von Euch macht Sport in der Freizeit?
  • Wer spielt ein Instrument?
  • Wer spielt Computerspiele?
  • Wer spielt Handyspiele?

 

Lustiges

  • Wer hat eine Schuhgröße größer als 35?

 

Letzte Frage

  • Wer ist schon in repl.it angemeldet?

Tag 1

Programmieren Teil 1: WE INSPIRE   ~75 Minuten

1. KONSOLENAUSGABE

  • Was ist die Konsole?
  • Was ist “print”?
  • Wieso muss ich den Text für print() in die Klammern setzen?
  • Wieso ist der Text in Anführungszeichen?
Hier findet Ihr Formulierungshilfen.
  • Was ist die Konsole?
    • Die Konsole nutzen wir, um das Ergebnis unseres Codes auf dem Bildschirm sehen zu können. Das ist sozusagen der Ort, an dem wir als Nutzer*innen mit dem Computer "sprechen" und interagieren.
  • Was ist “print”?
    • print ist ein Befehl an den Computer. Dieser Befehl ermöglicht es uns Buchstaben oder Zahlen auf der Konsole auszugeben oder zu drucken. Print ist englisch für drucken.
  • Wieso muss ich den Text für print() in die Klammern setzen?
    • Die Klammern grenzen den Bereich ein, der ausgegeben werden soll, also alles, was in den Klammern ist, soll auch ausgegeben/gedruckt werden.
  • Wieso ist der Text in Anführungszeichen?
    • Immer wenn wir dem Computer sagen wollen, dass etwas “Text” bzw. eine Zeichenkette ist, müssen wir Anführungszeichen nutzen. Ob ihr doppelte "..." oder einfache '...' nutzt ist egal.

2. VARIABLEN & INPUT

  • Was ist eine Variable?
  • Wie nutzen wir Variablen?
  • Was ist der “input”-Befehl?
1 name = "Theo"
2 print(name)
name = input("Wie heißt du? ")
print(name)
Hier findet Ihr Formulierungshilfen. (!Klick mich an!)
  • Was ist eine Variable?
    • Eine Variable ist wie ein Behälter oder eine Box zu verstehen. Diese speichert für uns einen bestimmten Wert bzw. irgendetwas ab. Was das ist, entscheiden wir als Nutzer*in frei. Diesen Wert merkt sich der Computer dann und wir können den Wert an einer späteren Stelle wieder abrufen.
  • Wie nutzen wir Variablen?
    • Sie wird verwendet, um Daten im Programm zu speichern und später darauf zuzugreifen oder sie zu verarbeiten.
  • Was ist der “input”-Befehl?
    • Der "input"-Befehl ist eine Möglichkeit für den Benutzer eine Eingabe in der Konsole zu tätigen, sozusagen mit dem Computer zu "sprechen".

Vertiefung

  • Leerzeichen und/oder Zeilenumbruch (\n) ans Ende von Input hinzufügen

3. BEDINGUNGEN (IF, ELSE, ELIF)

  • Was ist eine Bedingung?
  • Was macht “if”? Was macht “else”?
  • Was macht “elif” ?
Hier findet Ihr Formulierungshilfen.
  • Was ist eine Bedingung?
    • Eine Bedingung ist etwas, das entweder “wahr” oder “falsch” sein kann. Ihr könnt das mit einer Frage vergleichen. Wenn die Frage "wahr" ist, dann wird eine bestimmte Aktion ausgeführt, wenn sie "falsch" wird eine andere Aktion oder ein anderer Teil des Codes ausgeführt.
  • Was macht “if”? Was macht “else”?
    • "if" ermöglicht es uns, eine Bedingung zu überprüfen und entsprechend zu handeln, während "else" die Alternative liefert, die ausgeführt wird, wenn die Bedingung nicht erfüllt ist. Real Life Beispiel: "Wenn (if) ich 18 bin, darf ich alleine Autofahren, ansonsten (else) eben nicht.” Hier wieder den Bezug zum Englischen herstellen ;)
  • Was macht “elif” ?
    • "elif" gibt dir die Möglichkeit, weitere Bedingungen hinzuzufügen, die überprüft werden sollen, wenn die Bedingungen der "if"-Anweisung nicht erfüllt sind.

Programmieraufgabe

Teilt euren Bildschirm und wagt euch zu dem Code weiter unten vor.

 

Version 1 (einfachere Version ohne elif)

pw = input("Gib mir ein Passwort ")
if pw == "HackerSchool":
    print("Das Passwort war korrekt, du darfst eintreten.")
else:
    print("inkorrektes Passwort. Versuche es nochmal.")

Version 2 (schwerere Version mit elif)

pw = input("Gib mir ein Passwort ")
if pw == "HackerSchool":
    print("Das Passwort war korrekt, du darfst eintreten.")
elif pw == "SecretKey":
    print("Herzlichen Glückwunsch du hast den Secret Key
    gefunden und erhältst zusätzlich 100 Euro")
else:
    print("inkorrektes Passwort. Versuche es nochmal.")

4. ABSCHLUSS TEIL 1 - WE INSPIRE

Gehe nun spätestens auf individuelle Probleme und Fragen deiner Kleingruppe ein, wenn ihr dies bislang noch nicht getan hast.

 

Gehe dazu durch die jeweiligen Projekte der Schüler*innen

 

Tipp: Hier ist ein guter Moment durch die Replits der Teilnehmenden zu gucken um Hilfe zu leisten.

 

Vergesse dabei nicht die Schüler*innen zu loben und aufzuzeigen, was sie schon gelernt haben!

Die Schüler*innen scheinen nicht so motiviert zu sein?

Versuche ein persönliches Gespräch zu starten.
Denke an das Kennenlernen am Anfang (beim Spiel "Alle,die" oder ähnlichem) und spreche sie proaktiv auf Themen an. So baut ihr Nähe und Vertrauen zu ihnen auf.
Vergiss dabei nie: Eine gute und positive Beziehung zu den Schüler*innen zu haben ist das Wichtigste für einen erfolgreichen Kurs. Das heißt, nimm dir unbedingt die Zeit auch persönliche Sachen von dir zu teilen, um nahbarer zu werden. Dann läuft das Programmieren und Inspirieren wie von alleine ;)
Das Ziel eines Hacker School Kurses ist es nicht, das Konzept stur von Anfang bis Ende durchzuarbeiten und unbedingt alles fertig zu bekommen.

Programmieren Teil 2: INSPIRE ME   ~75 Minuten

Ziel definieren/ Projektauswahl

Jetzt kommt der proaktive "INSPIRE ME"-Teil aus Sicht der Schülerinnen und Schüler. Nun sind diese an der Reihe und inspirieren sozusagen dich als Inspir*ess!

Die Schüler*innen entscheiden nun eigenständig, welches Spiel sie alleine oder in der Kleingruppe umsetzen möchten.
Wählt dazu eines oder zwei der folgenden vier Spiele aus und zeigt sie den Schülerinnen und Schülern (spielt sie kurz vor). Wählt dabei den entsprechenden Schwierigkeitsgrad, je nachdem, wie sich die Gruppe im "WE INSPIRE"-Teil angestellt hat.

Ich weiß nicht welches Spiel ich wählen soll? (!Klick mich an!)

Generell gilt, dass für die meisten Klassen nur das "Einstiegslevel" in Frage kommt --> heißt Zahlenraten oder etwas Vergleichbares. Auch dieses Spiel ist teilweise noch zu schwierig für den Einstieg. Bleibt dann einfach bei einfachen "IF, ELSE, ELIF"-Abfragen und lasst die Schüler*innen damit rumspielen und ausprobieren und ermutigt sie, genau dies zu tun!

Schwierigkeiten
Level: * = Einstiegslevel | ** = Grundkenntnisse | *** = Fortgeschrittenes Level

 

Gerne könnt ihr auch eure eigenen vergleichbaren Spiele nutzen.

ACHTUNG: Je nach Schwierigkeitsgrad wird noch weiteres Vorwissen, neben Variablen und Bedingungen benötigt!

 

1. Zahlenraten *

Hier ist das fertige Projekt

 

 

ACHTUNG: Hierfür muss noch erklärt werden:

 

  • import random
    • import random: Das random-Modul ist Teil der Python-Standardbibliothek und bietet eine Reihe von Funktionen zur Generierung von Zufallszahlen.
    • zufällige_zahl = random.randint(1,100): Dieser Code generiert eine zufällige Ganze Zahl zwischen 1 und 100 und weist sie der Variablen zufällige_zahl zu.

 

  • while-Schleife
    • while: Eine While-Schleife ist eine spezielle Anweisung in einem Computerprogramm, die dazu verwendet wird, eine bestimmte Aufgabe immer wieder auszuführen, solange eine bestimmte Bedingung erfüllt ist. Was eine Bedingung ist hatten wir ja im ersten Teil ;)

Schritt für Schritt (Erklärung)

  1. Zuerst importiert man das Modul random in unser Programm.
  2. Wir erstellen eine Zufallszahl zwischen 1 und 100 mit der Funktion randint aus dem Modul random und speichern sie in der Variable zufällige_zahl.
  3. Wir definieren die maximale Anzahl an Versuchen, die ein Benutzer hat, um die Zufallszahl zu erraten, als max_versuche. In diesem Fall ist es 5.
  4. Wir starten eine while-Schleife, die so lange läuft, bis der Benutzer entweder die richtige Zahl geraten hat oder die maximale Anzahl an Versuchen erreicht wurde.
  5. Innerhalb der Schleife wird der Benutzer aufgefordert, eine Zahl zwischen 1 und 100 zu erraten. Die input-Funktion wird verwendet, um die Benutzereingabe als Integer zu lesen und in der Variable versuch zu speichern.
  6. Als nächstes überprüfen wir den vom Benutzer geratenen Wert mit der Zufallszahl. Wenn der geratene Wert größer als die Zufallszahl ist, wird eine Meldung ausgegeben, die besagt, dass die geratene Zahl zu hoch ist. Wenn der geratene Wert kleiner als die Zufallszahl ist, wird eine Meldung ausgegeben, die besagt, dass die geratene Zahl zu niedrig ist. Wenn der geratene Wert gleich der Zufallszahl ist, wird eine Meldung ausgegeben, die besagt, dass der Benutzer die Zahl erraten hat, und die Schleife wird mit break beendet.
  7. Nach jedem Versuch wird die Variable max_versuche um 1 verringert.
  8. Wenn der Benutzer die maximale Anzahl an Versuchen erreicht hat, wird eine Meldung ausgegeben, die besagt, dass er verloren hat.
  9. Das Programm endet mit der Ausgabe einer Abschlussmeldung.
import random

zufällige_zahl = random.randint(1, 100)
max_versuche = 5

while True:
    if max_versuche == 0:
        print("Du hast die Maximale Anzahl an Versuchen erreicht. :/")
        break
    versuch = int(input("Rate eine Zahl zwischen 1 und 100: "))
    #kann man auch mit if elif else machen
    if versuch > zufällige_zahl:
        print("Deine Zahl ist zu hoch")
    elif versuch < zufällige_zahl:
        print("Deine Zahl ist zu niedrig")
    elif versuch == zufällige_zahl:
        print("Yay du hast die Zahl eraten :) ")
        break
    max_versuche -= 1

print("Bis zum nächsten Mal")

2. Schere,Stein oder Papier **

Hier ist das fertige Projekt

 

ACHTUNG: Hierfür muss noch erklärt werden:
 

  • import random:
    Das random-Modul ist Teil der Python-Standardbibliothek und bietet eine Reihe von Funktionen zur Generierung von Zufallszahlen.
  • rand = random.randint(1,3):
    Dieser Code generiert eine zufällige Ganze Zahl zwischen 1 und 3 und weist sie der Variablen rand zu.
  • while:
    Eine While-Schleife ist eine spezielle Anweisung in einem Computerprogramm, die dazu verwendet wird, eine bestimmte Aufgabe immer wieder auszuführen, solange eine bestimmte Bedingung erfüllt ist
mögliche Erweiterungen
  • falsche Eingabe
  • erweitertes Regelwerk (Echse, Spock oder Feuer, Wasser und Brunnen)
  • Klein- & Großschreibung vereinheitlichen
  • Computerwahl in eine Funktion auslagern


 

Schritt für Schritt (Erklärung)

  1. Importiert das Modul random (import random), um den Zufallsgenerator zu nutzen.
  2. Initialisiere die Variablen punkte und comppunkte auf 0.
  3. Erstelle eine Endlosschleife while True:
  4. Generiere mit Hilfe von rand = random.randint(1,3) eine Zufallszahl zwischen 1 und 3, um die Wahl des Computers zu treffen.
  5. Ordne dem Computer je nach Zufallszahl die Option "Schere", "Stein" oder "Papier" zu.
  6. Fordere den Spieler auf, seine Wahl zu treffen und speichere die Eingabe in der Variable "spieler".
  7. Gib auf dem Bildschirm aus, welche Wahl der Computer getroffen hat.
  8. Überprüfe, wer in dieser Runde gewonnen hat, indem ihr die Optionen des Computers und des Spielers vergleicht.
  9. Wenn es ein Unentschieden gibt, gib "Unentschieden" auf dem Bildschirm aus.
  10. Wenn der Spieler gewinnt, gib "Du hast einen Punkt geholt" (oder ähnliches, hier dürfen die Kinder gerne kreativ werden) auf dem Bildschirm aus und erhöhe die Variable "punkte" um 1.
  11. Wenn der Computer gewinnt, gib "Dein Gegner hat einen Punkt geholt" auf dem Bildschirm aus und erhöhe die Variable "comppunkte" um 1.
  12. Gib die aktuellen Punkte des Spielers und des Computers auf dem Bildschirm aus.
  13. Überprüfe, ob entweder der Spieler oder der Computer drei Punkte erreicht hat. Wenn ja, gib eine Nachricht aus, die den Sieger angibt.
  14. Frage den Spieler, ob er eine Revanche spielen möchte. Wenn ja, setze die Punkte beider Spieler auf 0 zurück und beginne eine neue Runde. Andernfalls beende das Programm mit "break".
#Vorarbeit
import random

punkte = 0
comppunkte = 0

while True:

#Zufallsgenerator für die KI
    rand = random.randint(1,3)

    if rand == 1:
        comp = "Schere"
    if rand == 2:
        comp = "Stein"
    if rand == 3:
        comp = "Papier"

    spieler = input("Schere, Stein, Papier? ")
    print("Der Computer wählt " + comp)

    #Schere, Stein, Papier - Regel (wie gewonnen/verloren/unentschieden)
    if comp == spieler:
        print("Unentschieden")

    if spieler == "Schere" and comp == "Papier":
        print("Du hast einen Punkt geholt")
        punkte = punkte + 1
    if spieler == "Stein" and comp == "Schere":
        print("Du hast einen Punkt geholt")
        punkte = punkte + 1
    if spieler == "Papier" and comp == "Stein":
        print("Du hast einen Punkt geholt")
        punkte = punkte + 1

    if spieler == "Schere" and comp == "Stein":
        print("Dein Gegner hat einen Punkt geholt")
        comppunkte = comppunkte + 1
    if spieler == "Stein" and comp == "Papier":
        print("Dein Gegner hat einen Punkt geholt")
        comppunkte = comppunkte + 1
    if spieler == "Papier" and comp == "Schere":
        print("Dein Gegner hat einen Punkt geholt")
        comppunkte = comppunkte + 1

    print(punkte, ":", comppunkte)

    #Endresultat
    if punkte == 3:
        print("DU HAST GEWONNEN!")
        Revanche = input("Möchtest du nochmal spielen? ")
        if Revanche == "Ja":
            punkte = 0
            comppunkte = 0
        else:
            break
    if comppunkte == 3:
        print("DU HAST VERLOREN!")
        Revanche = input("Möchtest du nochmal spielen? ")
        if Revanche == "Ja":
            punkte = 0
            comppunkte = 0
        else:
            break

3. Taschenrechner **

Hier ist das fertige Projekt

 

ACHTUNG: Hierfür muss noch erklärt werden:

 

Funktionen:


Eine Funktion ermöglicht es, bestimmte Aufgaben auszulagern und den Code übersichtlicher und modularer zu gestalten.

Eine Funktion wird in Python definiert, indem der Begriff "def" gefolgt von einem Funktionsnamen und in Klammern die Parameter der Funktion angegeben werden: def <name>(*params): <body>

Der Code, der innerhalb der Funktion ausgeführt werden soll, wird in einem eingerückten Block geschrieben.

def plus(x,y):
    return x+y
  • while:
    Eine While-Schleife ist eine spezielle Anweisung in einem Computerprogramm, die dazu verwendet wird, eine bestimmte Aufgabe immer wieder auszuführen, solange eine bestimmte Bedingung erfüllt ist
mögliche Erweiterungen
  • weitere Rechenarten hinzufügen
  • mit mehr Zahlen rechnen

Schritt für Schritt (Erklärung)

  1. Die Code-Datei beginnt mit der Definition von vier Funktionen: "plus", "minus", "mal" und "geteilt", die jeweils zwei Argumente akzeptieren und das Ergebnis der entsprechenden Operation zurückgeben.
  2. Eine Textausgabe gibt dem Benutzer eine Auswahl von vier verschiedenen mathematischen Operationen: Addition, Subtraktion, Multiplikation und Division.
  3. Eine While-Schleife wird gestartet, die ständig läuft, bis sie manuell von einem Benutzer unterbrochen wird.
  4. Der Benutzer wird aufgefordert, einen der vier Operatoren auszuwählen, indem er die entsprechende Zahl eingibt.
  5. Die Benutzereingabe wird überprüft, um sicherzustellen, dass sie gültig ist, d.h. dass sie eine der vier zulässigen Zahlen ist.
  6. Der Benutzer wird aufgefordert, zwei Zahlen einzugeben, die er oder sie miteinander kombinieren möchte.
  7. Je nachdem, welcher Operator ausgewählt wurde, wird die entsprechende mathematische Funktion auf die beiden eingegebenen Zahlen angewendet und das Ergebnis wird auf der Konsole ausgegeben.
  8. Der Benutzer wird aufgefordert, zu entscheiden, ob er eine weitere Berechnung durchführen oder das Programm beenden möchte.
  9. Wenn der Benutzer das Programm beenden möchte, wird die Schleife durch ein "break"-Statement beendet.
  10. Wenn der Benutzer eine ungültige Auswahl trifft (z.B. eine andere Zahl als 1, 2, 3 oder 4 eingibt), wird eine Fehlermeldung ausgegeben.
def plus(x,y):
    return x+y
def minus(x, y):
    return x-y
def mal(x, y):
    return x*y
def geteilt(x, y):
    return x/y

print("Wähle")
print("1.Addition")
print("2.Subtraktion")
print("3.Multiplikation")
print("4.Division")

while True:
    auswahl=input("Gib mir ein Operator (1/2/3/4): ")
    if auswahl in ('1','2','3','4'):
        num1=float(input("Gib mir deine erste Zahl: "))
        num2=float(input("Gib mir deine zweite Zahl: "))

        if auswahl == '1':
            print(num1,"+",num2,"=",plus(num1,num2))
        if auswahl == '2':
            print(num1, "-", num2, "=", minus(num1, num2))
        if auswahl == '3':
            print(num1, "*", num2, "=", mal(num1, num2))
        if auswahl == '4':
            print(num1, "/", num2, "=", geteilt(num1, num2))

        next_rechnung=input("Willst du noch einmal rechnen? (ja/nein)")
        if next_rechnung== "nein":
            break
        else:
            print("SyntaxError: Invalid Input")

4. Tic,Tac,Toe ***

Hier ist das fertige Projekt

 

ACHTUNG: Hierfür muss noch erklärt werden:

 

  • while:
    Eine While-Schleife ist eine spezielle Anweisung in einem Computerprogramm, die dazu verwendet wird, eine bestimmte Aufgabe immer wieder auszuführen, solange eine bestimmte Bedingung erfüllt ist
  • import os (operating system):
    eine module durch welches man unter anderem System Befehle geben kann
  • boolean (Datentyp):
    Boolean ist ein Datentyp (sowie Zahlen), der entweder wahr oder falsch sein kann. Er hat genau zwei mögliche Werte: Wahr oder Falsch.

 

Funktionen:
Eine Funktion ermöglicht es, bestimmte Aufgaben auszulagern und den Code übersichtlicher und modularer zu gestalten.

 

Eine Funktion wird in Python definiert, indem der Begriff "def" gefolgt von einem Funktionsnamen und in Klammern die Parameter der Funktion angegeben werden: def <name>(*params): <body>

 

Der Code, der innerhalb der Funktion ausgeführt werden soll, wird in einem eingerückten Block geschrieben.

def plus(x,y):
    return x+y

Schritt für Schritt (Erklärung)

  1. Zuerst importiert man das Modul os in das Programm.
  2. Wir definieren die Anzahl der Reihen und Spalten unseres Spielfeldes und erstellen ein 3x3-Spielfeld als Liste von Listen in der Variable spielfeld. Wir setzen auch die Variable player auf False, um den ersten Spieler als "X" festzulegen.
  3. Wir definieren eine Funktion checkReihe, die überprüft, ob alle Werte in einer bestimmten Reihe des Spielfelds dem aktuellen Spieler entsprechen. Die Funktion gibt True zurück, wenn ja, und False, wenn nicht.
  4. Wir definieren eine Funktion checkSpalte, die überprüft, ob alle Werte in einer bestimmten Spalte des Spielfelds dem aktuellen Spieler entsprechen. Die Funktion gibt True zurück, wenn ja, und False, wenn nicht.
  5. Wir definieren eine Funktion gewonnen, die überprüft, ob der aktuelle Spieler das Spiel gewonnen hat, indem er checkReihe und checkSpalte auf alle Reihen und Spalten anwendet. Die Funktion gibt True zurück, wenn das Spiel gewonnen wurde, und False, wenn nicht.
  6. Wir definieren eine Funktion drawField, die das aktuelle Spielfeld als eine Reihe von horizontalen und vertikalen Linien mit den aktuellen Werten für jede Zelle ausgibt.
  7. Wir definieren eine Funktion checkInput, die überprüft, ob die Eingabe des Spielers für Reihe und Spalte innerhalb des Spielfelds liegt. Die Funktion gibt True zurück, wenn die Eingabe gültig ist, und False, wenn nicht.
  8. Wir definieren eine Funktion put, die die Eingabe des Spielers akzeptiert und das entsprechende Spielfeldfeld mit dem Symbol des aktuellen Spielers aktualisiert. Wenn das Feld bereits belegt ist, wird eine Fehlermeldung ausgegeben.
  9. Wir definieren eine Funktion print_winner_msg, die eine Nachricht ausgibt, die angibt, welcher Spieler das Spiel gewonnen hat.
  10. Wir rufen die Funktion drawField auf, um das Spielfeld zu initialisieren.
  11. Wir starten eine while-Schleife, die läuft, solange das Spiel nicht gewonnen ist oder das Spielfeld voll ist. Innerhalb dieser Schleife fordern wir den Benutzer auf, eine Reihe und Spalte für ihren Zug einzugeben.
  12. Wir überprüfen die Gültigkeit der Eingabe mit checkInput und rufen put auf, um das Spielfeld zu aktualisieren.
  13. Wir überprüfen, ob das Spiel gewonnen wurde, indem wir die Funktion gewonnen aufrufen. Wenn ja, geben wir eine Gewinnermeldung aus und brechen die Schleife ab.
  14. Wenn das Spiel nicht gewonnen wurde, wechseln wir den Spieler, indem wir die Variable player umkehren und rufen die Funktion drawField auf, um das aktualisierte Spielfeld auszugeben.
  15. Wenn das Spielfeld voll ist und kein Spieler gewonnen hat, geben wir eine Nachricht aus, die angibt, dass das Spiel unentschieden endete.
import os

reihen = 3
spalten = 3
spielfeld = [["   ","   ","   "],["   ","   ","   "],["   ", "   ","   "]]
player = False

def checkReihe(index, player_str):
    reihe = spielfeld[index]
    for spalte in reihe:
        if spalte != player_str:
            return (False)
    return True

def checkSpalte(index, player_str):
    for reihe in spielfeld:
        if reihe[index] != player_str:
            return (False)
    return True

def gewonnen():
    for reihe in range(3):
        if (checkReihe(reihe, " X ") or checkReihe(reihe, " O ")):
            return True
    for spalte in range(3):
        if (checkSpalte(spalte, " X ") or checkSpalte(spalte, " O ")):
            return True
    return False

def drawField():
    print("\n")
    for reihe in spielfeld:
        print("-------------")
        print("|", end="")
        for spalte in reihe:
            print(spalte + "|", end="")
        print()
    print("-------------\n\n")

def checkInput(reihe, spalte):
    if (reihe > 3 or reihe < 1):
        print("Deine Reihen Nummer existiert nicht")
        return False
    if (spalte > 3 or spalte < 1):
        print("Deine Spalten Nummer existiert nicht")
        return False
    return True

def put(player, reihe, spalte):
    if (not player and spielfeld[reihe - 1][spalte - 1] == "   "):
        spielfeld[reihe - 1][spalte - 1] = " X "
    elif (player and spielfeld[reihe - 1][spalte - 1] == "   "):
        spielfeld[reihe - 1][spalte - 1] = " O "
    else:
        print("Da steht bereits etwas")
        return False
    return True

def print_winner_msg(player):
    if not player:
        print("PLAYER 1 HAT GEWONNEN")
    else:
        print("PLAYER 2 HAT GEWONNEN")

def get_input(msg, player):
    if not player:
        return (int(input("Player 1 " + msg)))
    else:
        return (int(input("Player 2 " + msg)))

while True:
    os.system("clear")
    drawField()
    try:
        reihe = get_input("Reihe: ", player)
        spalte = get_input("Spalte: ", player)
    except KeyboardInterrupt:
        break
    if not checkInput(reihe, spalte):
        continue
    if not put(player, reihe, spalte):
        continue
    if gewonnen():
        print_winner_msg(player)
        break
    player = not player

    print("\nBis zum nächsten Mal")

Tag 2

INPUT BEFEHL

name = input("Wie heißt du eigentlich?")
print(name)
alter = input("Und wie alt bist du?")
print(alter)

# Mit der Funktion input() können wir den Nutzer des Programmes etwas eingeben lassen
# Die Eingabe wird hier in der Variable name gespeichert

FRAGEN ÜBERPRÜFEN

  • Jetzt wo bereits 3 Fragen über input gestellt werden, wird jetzt if else beigebracht
  • Aufgabe 2: Mit If else den eingegebenen input überprüfen und entweder „Richtig“ oder „Falsch“ augeben
user_Antwort = input("Frage 1")

    if user_Antwort == "Lösung":
        print("Richtíg")
    else:
        print("Leider Falsch")

# Mit if/else können wir Bedingungen überprüfen lassen
# if (Bedingung):
#   print("Richtig")       Das hier wird gemacht wenn die Bedingung erfüllt ist
# else:
#   print("Leider Falsch") Das hier wird gemacht wenn die Bedingung nicht erfüllt ist

FRAGEN WIEDERHOLEN

  • Aktuell kann jede Frage nur ein mal gestellt werden. Das wollen wir mit einer while Schleife ändern.
  • Aufgabe 3: Sorgt mit einer while Schleife dafür, dass jede Frage so oft wiederholt wird bis die richtige Antwort gegeben wird
i = True
while i:
    user_antwort = input("Frage 1")
    if user_antwort == "Lösung":
        print("Richtig")
        i = i + 1
    else:
        print("Leider Falsch, bitte versuche es nochmal")

print("Schleife Ende")

LISTE IN PYTHON

  • Jetzt wird gezeigt, wie man sich Listen in Python zu nutze machen kann dafür erstellen wir eine einfache Einkaufsliste
  • Aufgabe 4: Nutzt die Liste um eure Fragen in eine Liste auszulagern. Die Fragen sollen im Input dann über die Referenz auf der Liste aufgerufen werden
liste = ["Milch", "Eier", "Brot"]
print(liste)
print(liste[0])
print(liste[1])
print(liste[2])

# Eine Liste wird wie eine Variable un mit [] erstellt
# Elemente werden mit einem , getrennt
# Einzelne Elemente der Liste können über den jeweiligen Index [i] ausgegeben werden

Tupelliste 1

  • Aufbauend auf der Liste wird jetzt das Konzept der Tupelliste gezeigt. Dabei soll jedes Tupel eine Frage und die dazu passende Antwort enthalten
  • Aufgabe 5: Findet heraus wie man auf der Grundlage der Tupelliste auch einzelne Elemente aus der Tupelliste aufrufen kann.
tupelliste = [("Frage 1", "Antwort 1"), ("Frage 2", "Antwort 2")]

erste_Frage_und_Antwort = tupelliste[0]
zweite_Frage_und_Antwort = tupelliste[1]

print(erste_Frage_und_Antwort)
print(zweite_Frage_und_Antwort)

Tupelliste 2

  • Dies ist die angestrebte Lösung der Tupelliste 1 Aufgabe. Eine Alternative Lösung findet sich auf der nächsten Folie.
tupelliste = [("Frage 1", "Antwort 1"), ("Frage 2", "Antwort 2")]

erste_Frage_und_Antwort = tupelliste[0]
zweite_Frage_und_Antwort = tupelliste[1]

erste_Frage = erste_Frage_und_Antwort[0]
erste_Antwort = erste_Frage_und_Antwort[1]
zweite_Frage = zweite_Frage_und_Antwort[0]
zweite_Antwort = zweite_Frage_und_Antwort[1]

print(erste_Frage)
print(erste_Antwort)
print(zweite_Frage)
print(zweite_Antwort)

Tupelliste 3

  • Dies ist die Alternative Lösung für die Tupellisten Aufgabe. Falls eine Gruppe auf diese Lösung kommt ist das genau so Richtig. Falls der Fall eintrifft zeigt bitte ebenfalls den anderen Lösungsweg
  • Aufgabe 5: Lagert eure Fragen und Antworten jeweils in ein Tupel der Tupelliste aus. Benutzt dann an den jeweiligen Stellen in eurem Code eine Referenz auf die Tupelliste um das benötigte Element aufzurufen.
tupelliste = [("Frage 1", "Antwort 1"), ("Frage 2", "Antwort 2")]
print(tupelliste [0] [0])
print(tupelliste [0] [1])
print(tupelliste [1] [0])
print(tupelliste [1] [1])

FEINSCHLIFF

  • Der Hauptteil des Konzepts ist hiermit abgeschlossen jetzt geht es daran das Programm so benutzerfreundlich wie möglich zu machen.
  • Aufgabe 6: Nutzt \n und Schnittstellenkommentare die mit # eingeleitet werden um euren Code übersichtlich und lesbar zu machen.

Feedback abgeben

Format:

Konzept:

Link: