Willkommen zum virtuellen Informatikunterricht! Hier kannst du Python lernen und mit kleinen Aufgaben deine Progammierfähigkeiten ausbauen.

Grundlagen  

Grundlagen

First things first: Hier geht es um grundlegende Themen wie Ein- und Ausgabe, Variablen, Schleifen und Verzweigungen.

0 von 5 Aufgaben gelöst
Hello, world!

Schreibe ein Programm, das den Text Hello, world! ausgibt. Achte darauf, dass du genau diesen Text ausgibst.

Persönliche Begrüßung

Schreibe ein Programm, das einen Namen einliest und anschließend eine Begrüßung ausgibt.

Zahlenreihe

Schreibe ein Programm, das alle Zahlen von 1 bis 20 ausgibt (entweder hintereinander oder untereinander):

1 2 3 ... 20
Quadratzahlen

Schreibe ein Programm, das alle Quadratzahlen von 1 bis 20 in der folgenden Form ausgibt:

1 * 1 = 1
2 * 2 = 4
3 * 3 = 9
(usw.)
Pythagoreische Tripel

Gegeben sind drei Zahlen a, b, c. Schreibe eine Funktion, die ermittelt, ob diese drei Zahlen ein pythagoreisches Tripel bilden, also ob sie als Seitenlängen eines rechtwinkligen Dreiecks infrage kommen.


1. Beispiel

Eingabe:

a = 3
b = 4
c = 5

Ausgabe:

True

Erklärung: Die Zahlen bilden ein pythagoreisches Tripel, da gilt: 3² + 4² = 5².


2. Beispiel

Eingabe:

a = 13
b = 5
c = 12

Ausgabe:

True

Erklärung: Die Zahlen bilden ein pythagoreisches Tripel, da gilt: 5² + 12² = 13². In diesem Fall ist a die Hypothenuse.


3. Beispiel

Eingabe:

a = 7
b = 10
c = 9

Ausgabe:

False

*Erklärung: Die Zahlen bilden kein pythagoreisches Tripel, da gilt: 7² + 9² ≠ 10². In diesem Fall war b die längste Seite, aber nicht die Hypothenuse. *


Strings  

Strings

Hier geht es um Strings und die Operationen, die man auf ihnen durchführen kann.

0 von 3 Aufgaben gelöst
Palindrom

Ein Palindrom ist ein Wort, welches sich nicht verändert, wenn rückwärts gelesen wird. Dabei spielt die Groß- und Kleinschreibung keine Rolle.

Schreibe eine Methode, die ermittelt, ob ein gegebenes Wort ein Palindrom ist oder nicht.


Beispiel

Eingabe:

"Otto"

Ausgabe:

True

Erklärung: „Otto“ ist rückwärts geschrieben „ottO“ und somit ohne Berücksichtigung der Groß- und Kleinschreibung ein Palindrom.


Beispiel

Eingabe:

"Peter"

Ausgabe:

False

Erklärung: „Peter“ ist rückwärts geschrieben „reteP“ und somit selbst ohne Berücksichtigung der Groß- und Kleinschreibung kein Palindrom.

Anagramm

Anagramme sind Paare sinnvoller Wörter, die aus denselben Buchstaben bestehen, sich aber in der Anordnung dieser Buchstaben unterscheiden.

Schreibe eine Methode, die ermittelt, ob ein ein gegebener Strings a ein Anagramm eines anderen gegebenen Strings b ist. Leerzeichen sowie Groß- und Kleinschreibung sollen dabei keine Rolle spielen.


Beispiel

Eingabe:

a = "Weizenfeld", b = "zweifelnde"

Ausgabe:

True

Erklärung: Die Buchstaben des Wortes „Weizenfeld“ können so umgestellt werden, dass sich das Wort „zweifelnde“ ergibt (unter Nichtberücksichtigung der Groß- und Kleinschreibung), deshalb handelt es sich um ein Anagramm.

Großbuchstaben

Schreibe eine Methode, die in einem String alle Buchstaben von A bis Z in Großbuchstaben umwandelt. Alle anderen Zeichen sollen unverändert bleiben.


Beispiel

Eingabe:

"breaking news"

Ausgabe:

"BREAKING NEWS"

Listen  

Listen

Hier geht es um Listen und die Operationen, die man auf ihnen durchführen kann.

0 von 3 Aufgaben gelöst
Maximum finden

Gegeben ist eine Liste von Zahlen. Finde die größte Zahl in der Liste und gib sie zurück.


Beispiel

Eingabe:

[6, 3, 1, 9, 7]

Ausgabe:

9

Erklärung: 9 ist die größte Zahl in der Liste und wird deshalb zurückgegeben.

Summe von Zahlen

Gegeben ist eine Liste von Zahlen. Bilde die Summe aller Zahlen und gib sie zurück.


Beispiel

Eingabe:

[3, 6, 9, 7, 5]

Ausgabe:

30

Erklärung: 30 ist die Summe der Zahlen in der Liste und wird deshalb zurückgegeben.

Monotonie

Gegeben ist eine Reihe (also eine Liste) von Zahlen. Schreibe eine Funktion, die überprüft, ob die Reihe streng monoton ist.


Beispiel 1

Eingabe:

[3, 6, 9]

Ausgabe:

True

Erklärung: Die Zahlenreihe ist streng monoton, weshalb True zurückgegeben wird.


Beispiel 2

Eingabe:

[10, 8, 7]

Ausgabe:

True

Erklärung: Die Zahlenreihe ist streng monoton, weshalb True zurückgegeben wird.


Beispiel 3

Eingabe:

[6, 3, 9]

Ausgabe:

False

Erklärung: Die Zahlenreihe ist nicht streng monoton, weshalb False zurückgegeben wird.


Beispiel 4

Eingabe:

[3, 3, 9]

Ausgabe:

False

Erklärung: Die Zahlenreihe ist nicht streng monoton, weshalb False zurückgegeben wird.


Bit-Basteleien  

Bit-Basteleien

Hier geht es um Bits und Stellenwertsysteme.

0 von 2 Aufgaben gelöst
Binärdarstellung

Schreibe eine Funktion, die eine positive, ganze Zahl in ihre Binärdarstellung umwandelt.


Beispiel

Eingabe:

123

Ausgabe:

'1111011'
Anzahl der gesetzten Bits

Schreibe eine Funktion, die ermittelt, wie viele Bits in der Binärdarstellung einer gegebenen Zahl gesetzt sind.


Beispiel

Eingabe:

123

Ausgabe:

6

Die Binärdarstellung von 123 lautet 1111011. Es sind also 6 Bits gesetzt und daher lautet die Antwort 6.


Krypto  

Krypto

Hier geht es um Strings, Bits, Streams und Verschlüsselung.

0 von 2 Aufgaben gelöst
Cäsar-Chiffre

Bei der Cäsar-Verschlüsselung wird jeder Buchstabe einer Nachricht einfach immer um eine bestimmte Entfernung k nach rechts „verschoben“. Ist z. B. k = 3, so würde aus dem Wort „CAESAR“ das Wort „FDHVDU“ werden, da C zu F wird, A zu D und immer so weiter. Es wird also gewissermaßen auf jeden Buchstaben eine Zahl k „addiert“. Dabei handelt es sich um eine zyklische Addition. Das heisst, dass man wieder bei A beginnt, wenn man über den Buchstaben Z hinauskommt.

Um einen so verschlüsselten Geheimtext zu entschlüsseln, wendet man dasselbe Verfahren an, nur dass man nicht k addiert, sondern k subtrahiert (im Spezialfall k = 13 erhält man so das ROT13-Verfahren, bei es egal ist, ob man addiert oder subtrahiert).

Schreibe eine Funktion, die ein mit dem Cäsar-Verfahren verschlüsseltes Wort wieder entschlüsselt und das entschlüsselte Wort zurückgibt. Das verschlüsselte Wort wird als Parameter s in die Funktion übergeben, der zur Verschlüsselung verwendete Wert k ebenfalls.

Hinweise: Das Argument, das in s übergeben wird, enthält ausschließlich Großbuchstaben von A bis Z (es enthält keine Leerzeichen oder sonstigen Sonderzeichen). Für den Wert k gilt: 0 < k < 26.


Beispiel

Eingabe:

k = 3
s = "WRSVHFUHW"

Ausgabe:

"TOPSECRET"

Erklärung: Alle Buchstaben werden um 3 Positionen im Alphabet nach links verschoben (da wir entschlüsseln) und so entsteht das Lösungswort.

Man in the middle

Gegeben ist ein Datenstrom (also ein Text) unbekannter Länge, der von dir gefiltert werden soll. Ein bestimmtes Wort, das vorher definiert wird, soll durch dein Programm im Datenstrom immer durch ein anderes Wort ersetzt werden.

Implementiere die Methode receive in der Klasse Filter, die immer ein oder mehrere Zeichen dieses Datenstroms erhält und die Aufgabe hat, sie mit Hilfe der Methode send wieder auszugeben. Achte aber darauf, dass du das Suchwort niemals ausgibst, sondern immer durch das Ersatzwort ersetzst.

Das Suchwort findest du in self.search, das Ersatzwort in self.replace (es handelt sich um Strings, es können also genaugenommen beliebige Zeichenketten sein, nicht nur Wörter).

Hinweis: du kannst bei der Lösung dieser Aufgabe nicht warten, bis du „alle“ Zeichen empfangen hast, um dann einfach alle Vorkommen von search durch replace zu ersetzen, weil du nie weißt, wann der Datenstrom zuende ist. Auch falls eine Weile lang kein Zeichen mehr kommt, heisst das nicht, dass der Datenstrom zuende ist. Sorge dafür, dass jedes Zeichen, das du ausgibst, so früh wie möglich gesendet wird.


Beispiel (für search = "Alice" und replace = "Mallory")

Eingabestrom:

Alles deutet darauf hin: Alice hat den Keks aus der Dose geklaut.

Ausgabestrom:

Alles deutet darauf hin: Mallory hat den Keks aus der Dose geklaut.

Beispiel (für search = "Euler" und replace = "Gauß")

Eingabestrom:

Showdown: Euler vs. 100 Eulen

Ausgabestrom:

Showdown: Gauß vs. 100 Eulen

Wizard  

Wizard

Steuere einen Zauberer durch ein Verlies und sorge dafür, dass er bestimmte Aufträge erfüllt.

0 von 5 Aufgaben gelöst
Wizard: Einführung

Steuere den Magier zur Münze und sammle die Münze ein! Du kannst dafür die Methode self.forward() verwenden, mit der du einen Schritt nach vorne gehen kannst. Wenn du angekommen bist, verwende die Methode self.get_coin(), um die Münze aufzuheben.

Münzsammler

Sammle alle Münzen auf! Pass auf, dass du dabei nicht gegen Wände läufst. Um dich zu drehen, kannst du die Funktionen self.turn_left() und self.turn_right() verwenden.

Falls dir der Zauberer zu langsam ist, kannst du die Geschwindigkeit mit self.set_speed(speed) einstellen, wobei du eine Zahl von 1 (sehr langsam) bis 100 (sehr schnell) übergeben musst. Die normale Geschwindigkeit ist 50.

Münzspirale

Sammle alle Münzen auf!

Falls dir der Zauberer zu langsam ist, kannst du die Geschwindigkeit mit self.set_speed(speed) einstellen, wobei du eine Zahl von 1 (sehr langsam) bis 100 (sehr schnell) übergeben musst. Die normale Geschwindigkeit ist 50.

Zickzack

Sammle alle Münzen auf! Versuche, dein Programm mit Hilfe von for-Schleifen und if-Abfragen möglichst kurz zu machen.

Monster-Mampf

Sammle alle Münzen auf. Aber pass auf, dass du nicht vom Monster gefressen wirst!


Dies und das  

Dies und das

Ein Sammelsurium kleiner Aufgaben und Kuriositäten.

0 von 2 Aufgaben gelöst
Sandbox

In dieser Sandbox kannst du beliebige Dinge programmieren. Es gibt hier keine richtigen oder falschen Lösungen, aber wenn du mal einen Python-Interpreter zum ausprobieren brauchst, bist du hier genau richtig.

Pixelflut

Zeichne Pixel auf eine gemeinsame Zeichenfläche! Deine Pixel bleiben so lange stehen, bis jemand anderes etwas darüber zeichnet.

Die Zeichenfläche ist 256 Pixel breit und 144 Pixel hoch. Der Pixel links oben hat die Koordinaten (0, 0), der Pixel rechts unten hat die Koordinaten (255, 143). Verwende die Methode self.set_pixel(x, y, r, g, b), um einen Pixel zu setzen, wobei r, g und b jeweils die Intensität von rot, grün und blau im Bereich von 0 bis 255 angeben.

Du darfst natürlich auch die ganze Zeichenfläche überschreiben!

Quine

Ein Quine ist ein Programm, das seinen eigenen Quelltext ausgibt. Dabei ist es nicht erlaubt, den eigenen Quelltext zu lesen.

Schreibe einen Quine! Bonuspunkte (ehrenhalber) gibt es für Lösungen, die nicht sofort per Google zu finden sind. 😉

Impressum und Datenschutz