Python Gaming: Code dein Spiel

Entwicklungsumgebung

  • Wir arbeiten während dem Kurs mit dem Online-Editor Repl.it: https://repl.it
  • Die Logindaten für den jeweiligen Account bekommt ihr von den Team-Inspirern im Kurs. Aus organisatorischen Gründen können wir die Accounts nicht vor Kursbeginn zur Verfügung stellen.
  • Wie Replit funktioniert, findest du hier in unserem Inspirer-Handbuch.

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?

In unserem Inspirer Handbuch findet ihr weitere Spielideen.

Wenn Ihr ONLINE diese Vorstellung etwas interaktiver gestalten möchtest, empfehlen wir das Spiel “Alle, die”, was im folgenden erklärt wird:

 

Spielidee und Ziel

 

Alle Schüler*innen machen ihre Kamera an und kommen locker und leicht ins Gespräch mit den jeweiligen Inspirer.

Außerdem: Erste Diagnose, was die Schüler*innen können.

 

Ablauf

 

  1. Fordert die Schüler*innen auf die Kamera anzumachen und checke, ob alle Kameras funktionieren
  2. Fordert die Schüler*innen auf die Kamera mit dem Finger zu verdecken oder sie aus zu machen
  3. Stellt eine “Alle, die”-Frage (z.B: “Alle, die schon einmal programmiert haben?” oder “Alle, die Sport in der Freizeit machen?”)
  4. Alle, die sich angesprochen fühlen, nehmen ihren Finger von der Kamera oder machen die Kamera an
  5. Stellt kurze Rückfragen und kommt ins Gespräch
  6. Stellt eine zweite Frage
  7. Stellt kurze Rückfragen und kommt ins Gespräch
  8. usw.

Nutzt den Chat, wenn die Kameras deaktiviert sind. Viele Schüler*innen kennen das aus dem Gamingbereich.

Zum Beispiel folgendermaßen:

  • “Tippt in den Chat: 1 = Zustimmung , 2 = Ablehnung”

Wenn Ihr den Chat nicht nutzen möchtet, könnt ihr auch die Reaktionen in Zoom verwenden (z.B. Daumen hoch Emoji für alle, die die Kamera deaktiviert haben.)

Sammlung von möglichen Fragen

Diese Sammlung ist frei erweiterbar

 

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?

Programmieren Teil 1: WE INSPIRE

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.
Wie speichere bei repl.it mein Projekt ab?

Man muss das Projekt als Datei herunterladen, das dürfen/können die Schüler*innen aber ggf. auf den Schulgeräten nicht. Außerdem braucht man ein eigenen Account bei repl.it, um es später öffnen zu können.

Um das Projekt speichern zu können müssen die 3 Punkte rechts auf dem Bild angeklickt werden.

Screenshot Replit zeigt Buttons

Hier wird man mehrere Optionen auffinden, wir benötigen ausschließlich Download as zip.

Screenshot in Replit zeigt Dropdown

Damit man das Projekt später wieder öffnen (und vor allem, anderen zeigen) kann, braucht man einen eigenen Account.
Für einen Account braucht man eine E-Mail und dafür muss man zum Beispiel bei Google über 13 Jahre alt sein. Falls eine Person eine E-Mail hat, auf die sie zugreifen kann, ist das Erstellen eines Accounts relativ einfach. Am besten in einem neuen Fenster den Account erstellen, auf dem Handy die E-Mail bestätigen und dann auf dem Programmierbildschirm oben rechts auf anmelden klicken.
Hier kann diese dann Ihr Projekt wieder hochladen.

Programmieraufgabe

1. Probiert es selbst aus und ändert den Text.

print("Hallo Welt!")
print("Schön, dass Ihr da seid!")

2: Optionale Erweiterungen:

Fügt zu dem oben stehenden Code einen Smiley aus der Webseite Emojis hinzu und lasst ihn auf dem Bildschirm erscheinen.

2. Variablen & Input

  • Was ist eine Variable?
  • Wie nutzen wir Variablen?
  • Was ist der “input”-Befehl?
name = "Theo"
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?

Versucht, ein persönliches Gespräch zu starten.

Denkt an das Kennenlernen am Anfang (beim Spiel "Alle, die" oder ähnlichem) und sprecht sie proaktiv auf Themen an. So baut ihr Nähe und Vertrauen zu ihnen auf.

Vergesst dabei nie: Eine gute und positive Beziehung zu den Schüler*innen zu haben ist das Wichtigste für einen erfolgreichen Kurs (Die Erfahrung zeigt: Sogar noch wichtiger als tiefgründiges Fachwissen!). Das heißt, nehmt euch unbedingt die Zeit, auch Persönliches 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.

Wie speichere bei repl.it mein Projekt ab?

Man muss das Projekt als Datei herunterladen, das dürfen/können die Schüler*innen aber ggf. auf den Schulgeräten nicht. Außerdem braucht man ein eigenen Account bei repl.it, um es später öffnen zu können.

Um das Projekt speichern zu können müssen die 3 Punkte rechts auf dem Bild angeklickt werden.

Screenshot Replit zeigt Buttons

Hier wird man mehrere Optionen auffinden, wir benötigen ausschließlich Download as zip.

Screenshot in Replit zeigt Dropdown

Damit man das Projekt später wieder öffnen (und vor allem, anderen zeigen) kann, braucht man einen eigenen Account.
Für einen Account braucht man eine E-Mail und dafür muss man zum Beispiel bei Google über 13 Jahre alt sein. Falls eine Person eine E-Mail hat, auf die sie zugreifen kann, ist das Erstellen eines Accounts relativ einfach. Am besten in einem neuen Fenster den Account erstellen, auf dem Handy die E-Mail bestätigen und dann auf dem Programmierbildschirm oben rechts auf anmelden klicken.
Hier kann diese dann Ihr Projekt wieder hochladen.

Programmieren Teil 2: INSPIRE ME

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!)

Schwierigkeiten

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!

ChatGPT und KI

Das Thema wird sicher an den einen oder anderen Stelle aufkommen.

  • Wenn ja: Gehe proaktiv darauf ein und versuche ChatGPT als Chance und Möglichkeit zu nutzen HTML schneller zu verstehen. Ähnlich wie das im Programmieren mit Stake Overflow oder Google auch ist. Denke auch hier an unser Hacker School Mindset WE INSPIRE.
  • Wenn nein: Sprich es gerne an, zeige ChatGPT und nutze es als Motivationsschub. Gehe dabei gerne auf deine Erfahrungen ein und sensibilisere dafür, dass die Antworten hinterfragt werden sollten, da es keine Quellenangaben gibt und die Antworten auf Wahrscheinlichkeiten basieren.
  • Doch was ist überhaupt eine KI am Beispiel von ChatGPT? Fragt die Schüler*innen, was sie denken und geht dann darauf ein.

 

Zum Beispiel auf folgende Art und Weise: "KI steht für Künstliche Intelligenz. Eine KI ist zu allererst ein sehr langer Programmcode (Algorithmus), mit dem eine Anwendung oder App (wie ChatGPT) entwickelt wird. Dabei kann diese Anwendung, Aufgaben erledigen, die normalerweise menschliche Intelligenz erfordern würden. Gleichzeitig ist ChatGPT aber natürlich kein Mensch, sondern eine computerbasierte Anwendung.

 

ChatGPT ist mit einer riesigen Datenmenge aus dem Internet "gefüttert" worden und hat daraus gelernt (genauso, wie unser Gehirn auch). Heißt ChatGPT hat sozusagen ganz genau die Texte im Internet analysiert und angeschaut. Wenn du z. B. fragst, was die Antwort auf die Frage: "Was ist die Hauptstadt von Deutschland?" ist, wird die Antwort mit hoher Wahrscheinlichkeit "Berlin" sein. Das liegt daran, dass ChatGPT durch die Textanalyse gelernt hat, dass die Hauptstadt von Deutschland in den allermeisten Fällen "Berlin" ist. Die Antwort wird dann in "menschlicher Art und Weise" gegeben.

 

Die Intelligenz von ChatGPT besteht also darin, dass es aus den gesammelten Informationen und Mustern eine logische Antwort ableitet, auch wenn es nicht wirklich "versteht" oder denkt wie ein Mensch. ChatGPT weiß dann mit höchster Wahrscheinlichkeit, dass die Antwort "Berlin" lauten muss.

 

Zu guter Letzt. Wenn dich jetzt die SuS zurückfragen, was genau ein Algorithmus, ein Programm oder eine Anwendung (App oder Anwendungsprogramm) ist, frage einfach ChatGPT. Oder lese diesen oder diesen Artikel durch.

 

Kommentiere gerne direkt hier, welche Erfahrungen du im Kurs damit gemacht hast, indem du links neben diesen Text klickst oder schreibe es ins Feedback am Ende des Kurses.

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")

Berufsorientierung und Feedback

In eurer Gruppe (~5 Min):

  • Wenn ihr eurer Gruppe am Ende noch Feedback geben wollt, dann nehmt euch gerne jetzt Zeit dafür.
  • Fragt nach, ob jemand (in der Abschlussrunde im großen Plenum) vorstellen möchte, was ihr so gemacht habt.

Im Plenum (~25 Min):

  • Die Teilnehmenden, die möchten, stellen ihre Projekte vor
  • Die Berufsorientierung wird von der Team Inspiress oder dem Team Inspirer eingeleitet
  • Hier erzählt ihr in einem Gespräch mit dem Team Inspirer oder der Team Inspiress davon, wie ihr in die IT gekommen seid und was euch daran Spaß macht.
  • In unserem Inspirer Handbuch findet ihr noch weitere Tipps für eine spannende Berufsorientierung
  • (Wenn erwünscht, bekommt der*die Lehrer*in kurz das Wort)
  • Feedbacklinks werden von den Team-Inspirern geteilt

Weitere Kurse buchen?

Ihr möchtet weitere Jugendliche für das Programmieren begeistern und euer Vorgehen beim Begeistern optimieren?

Hier meldet ihr euch für weitere Hacker School Kurse an.

Feedback abgeben

Format:

Konzept:

Link: