Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| efinf:blcks2017:jython:zusatzaufgaben [2017/09/12 08:13] – Simon Knaus | efinf:blcks2017:jython:zusatzaufgaben [2017/09/14 06:50] (current) – Simon Knaus | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ==== 3.2 ==== | ||
| + | Ineinander geschachtelte '' | ||
| + | |||
| + | * **Primzahlen**: | ||
| + | * **" | ||
| + | * **GPanel**. Schau dir die Funktion '' | ||
| + | * Optional: Farben können in [[https:// | ||
| + | * // | ||
| + | * **Turtle**. Die Grafik ist auch mit der Turtle möglich. Es empfiehlt sich allerdings, die Funktionen '' | ||
| + | * **" | ||
| + | for c in ' | ||
| + | print c | ||
| + | </ | ||
| + | * // | ||
| + | |||
| + | |||
| + | ==== 3.4 ==== | ||
| + | Neber der Möglichkeit, | ||
| + | * **Abstand vom Urpsrung**: Modifiziere das [[efinf: | ||
| + | * Optional: Lies dir das Kapitel zu " | ||
| + | * **2048**: Schreibe eine Funktion, welche dir auf Grund eines Kachelwerts (einer Zweierpotenz) die zugehörige Farbe liefert. Du kannst das Skelett unten verwenden. Es geht einzig darum, die Funktion '' | ||
| + | |||
| + | |||
| + | <code python skelett.py> | ||
| + | from gpanel import * | ||
| + | |||
| + | |||
| + | # Globale Variablen zur Steurung | ||
| + | kachelsize = 4 | ||
| + | kachelno = 4 | ||
| + | |||
| + | |||
| + | makeGPanel(0, | ||
| + | |||
| + | #Spielbrett | ||
| + | tiles = [[-1, 2 ,4, 8], | ||
| + | [16, 32 , 64, 128 ], | ||
| + | [256, 512, 1024, 2048], | ||
| + | [ -1 , -1, -1 , -1 ]] | ||
| + | | ||
| + | # Funktion zeichnet Kachel. | ||
| + | # Argumente: olx, oly x und y Koordinate oben links | ||
| + | # shownumber: Zahl die angezeigt werden soll | ||
| + | # size: Grösse der Kachel | ||
| + | |||
| + | def zeichneKachel(olx, | ||
| + | setColor(color) | ||
| + | fillRectangle(olx, | ||
| + | if shownumber <> "": | ||
| + | text(olx+size/ | ||
| + | |||
| + | # Funktion gibt Farbe auf Grund von Kachelwert zurück | ||
| + | # Argumente: Kachelwert -1, | ||
| + | def definiereFarbe(kachelwert): | ||
| + | # hier die Funktion definieren | ||
| + | return(" | ||
| + | |||
| + | #loop durch zeilen | ||
| + | for i in range(0, kachelno): | ||
| + | #loop durch spalten | ||
| + | for j in range(0, kachelno): | ||
| + | #zeichne die Kachel i,j mit definierter Farbe | ||
| + | zeichneKachel(0+j*kachelsize, | ||
| + | | ||
| + | getKeyCodeWait() | ||
| + | dispose() | ||
| + | </ | ||
| + | ==== 3.9 ==== | ||
| + | Für 2048 müssen wir Elemente in Listen verschieben und ändern. Löse dazu folgende Aufgaben: | ||
| + | - Schreibe eine Funktion, welche alle Elemente in einer Liste '' | ||
| + | - Schreibe eine Funktion, welche einerseits alle Elemente nach rechts schiebt und wenn zwei gleiche Zahlen (ausser << | ||
| + | - Schreibe eine Funktion, welche das ganze für eine << | ||
| + | - Optional: Schreibe eine Funktion, welche eine geschachtelte Liste rotiert, i.e. < | ||
| + | %aus | ||
| + | [[-1, 2, 4, 8], | ||
| + | [16, 32, 64, 128], | ||
| + | [256, 512, 1024, 2048], | ||
| + | [-1, -1, -1, -1]] | ||
| + | % wird | ||
| + | [[-1, 256, 16, -1], | ||
| + | [-1, 512, 32, 2], | ||
| + | [-1, 1024, 64, 4], | ||
| + | [-1, 2048, 128, 8]]</ | ||
| + | <hidden Tipps> | ||
| + | - Schreibe eine erste Funktion, welche alle Zahlen aus der Liste in eine neue Liste packt. Ergänze dann diese neue Liste an der richtigen Stelle um die ignorierten leeren Zellen (also um ' | ||
| + | * '' | ||
| + | * Alle Funktionen im << | ||
| + | - Verwende die Funktion aus 1. um alle Elemente nach rechts zu schieben. Hast du das, kannst du den nächsten Schritt angehen, das heisst, überprüfen, | ||
| + | - Am besten iterierst du über eine '' | ||
| + | |||
| + | <code python skelett_a12.py> | ||
| + | liste =[[-1, 2, 4, 8], | ||
| + | [16, 32, 64, 128], | ||
| + | [256, 512, 1024, 2048], | ||
| + | [-1, -1, -1, -1]] | ||
| + | |||
| + | print(liste) | ||
| + | #dumme funktion die das zweite und dritte element vertauscht | ||
| + | def meinefunktiondiediezeilemodifiziert(inzeile): | ||
| + | print(" | ||
| + | print(inzeile) | ||
| + | outzeile = [inzeile[0], | ||
| + | return(outzeile) | ||
| + | |||
| + | for i in range(len(liste)): | ||
| + | liste[i] = meinefunktiondiediezeilemodifiziert(liste[i]) | ||
| + | |||
| + | print(liste) | ||
| + | </ | ||
| + | </ | ||
| + | === Listen iterieren === | ||
| + | Listen sind zwar iterierbare Objekte, manchmal ist es aber hilfreich die Indices zu verwenden: Zwei von der Ausgabe her äquivalente Lösungen zur Ausgabe jedes Elements sind unten. | ||
| + | <code python listloops.py> | ||
| + | items = [2,-1,8,4] | ||
| + | |||
| + | for i in range(len(items)): | ||
| + | print(items[i]) | ||
| + | |||
| + | for el in items: | ||
| + | print(el) | ||
| + | </ | ||
| + | === Ausgabe Listen === | ||
| + | Als kleine Hilfestellung noch die untenstehende Funktion '' | ||
| + | <code python printdoublelists.py> | ||
| + | import sys | ||
| + | tiles = [[-1, 2 ,4, 8], | ||
| + | [16, 32 , 64, 128 ], | ||
| + | [256, 512, 1024, 2048], | ||
| + | [ -1 , -1, -1 , -1 ]] | ||
| + | |||
| + | |||
| + | def printDoubleLists(lists): | ||
| + | for i in range(len(lists)): | ||
| + | for j in range(len(lists[i])): | ||
| + | sys.stdout.write(str(lists[i][j])) | ||
| + | sys.stdout.write(" | ||
| + | sys.stdout.write(" | ||
| + | | ||
| + | printDoubleLists(tiles) | ||
| + | </ | ||