Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lehrkraefte:snr:informatik:python:wichtiges-zur-projektarbeit [2021/11/09 16:22] Olaf Schnürer [Beispiel] |
lehrkraefte:snr:informatik:python:wichtiges-zur-projektarbeit [2022/05/23 12:40] (current) Olaf Schnürer [Allgemeines und Zeitplan] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Wichtiges zur Projektarbeit der Klasse | + | ====== Wichtiges zur Projektarbeit der Klassen |
Ich habe versucht, einige wichtige Informationen zusammenzustellen. Bei Fragen oder Bemerkungen bitte direkt an mich wenden. | Ich habe versucht, einige wichtige Informationen zusammenzustellen. Bei Fragen oder Bemerkungen bitte direkt an mich wenden. | ||
Line 9: | Line 9: | ||
* Arbeit an den Projekten in 4 Doppellektionen (oder auch ab sofort): 17. und 24. November, 1. und 8. Dezember 2021 | * Arbeit an den Projekten in 4 Doppellektionen (oder auch ab sofort): 17. und 24. November, 1. und 8. Dezember 2021 | ||
* Abgabe der lauffähigen Python-Programme: | * Abgabe der lauffähigen Python-Programme: | ||
- | * 15. Dezember (letzte Doppellektion vor Weihnachten): | + | * 15. Dezember (letzte Doppellektion vor Weihnachten): |
* Wer will, dass sein Python-Programm im Rahmen der Kurs-Seiten (mit dem dortigen Copyright) veröffentlicht wird, gibt mir Bescheid (am besten mit der Abgabe). | * Wer will, dass sein Python-Programm im Rahmen der Kurs-Seiten (mit dem dortigen Copyright) veröffentlicht wird, gibt mir Bescheid (am besten mit der Abgabe). | ||
- | * ? Jede Gruppe darf selbst eine Note vorschlagen | + | * Alle Mitglieder einer Gruppe bekommen dieselbe Note. |
+ | * Jede Gruppe darf selbst eine Note vorschlagen, am Ende entscheide aber ich. | ||
===== Themenwahl ===== | ===== Themenwahl ===== | ||
Line 46: | Line 47: | ||
===== Beispiel ===== | ===== Beispiel ===== | ||
- | Hier ist mein Projekt, für das ich mir eine 6 geben würde 8-): | + | Hier ist mein Projekt, für das ich mir eine 6 geben würde 8-) - eine ähnliche Simulation findet sich auf [[https:// |
<code python> | <code python> | ||
# Autor: Olaf Schnürer | # Autor: Olaf Schnürer | ||
Line 59: | Line 59: | ||
# | # | ||
# Wir stellen uns vor, dass oberhalb des Gesteins beliebig viel Wasser vorhanden | # Wir stellen uns vor, dass oberhalb des Gesteins beliebig viel Wasser vorhanden | ||
- | # ist und simulieren, wie dieses in das Gestein | + | # ist und simulieren, wie dieses in das Gestein |
# | # | ||
# Mögliche Anschlussfrage: | # Mögliche Anschlussfrage: | ||
Line 71: | Line 71: | ||
from random import randint, random | from random import randint, random | ||
+ | # Abmessungen des Gesteins: | ||
Xmax = 400 | Xmax = 400 | ||
Ymax = 200 | Ymax = 200 | ||
+ | |||
+ | # Seitenlänge eines Quadrats in Bildschirm-Pixel | ||
skalierung = 4 | skalierung = 4 | ||
- | FARBE = [" | + | |
+ | # Wahrscheinlichkeit für Fels | ||
p = 0.41 | p = 0.41 | ||
Line 83: | Line 87: | ||
rectangle(x * skalierung, y * skalierung, (x + 1) * skalierung, (y + 1) * skalierung) | rectangle(x * skalierung, y * skalierung, (x + 1) * skalierung, (y + 1) * skalierung) | ||
- | makeGPanel(Size(Xmax * skalierung, Ymax * skalierung)) | + | # Öffne Fenster und vereinbare Koordinaten. |
- | window(0, Xmax * skalierung, | + | makeGPanel(Size(Xmax * skalierung, Ymax * skalierung |
- | feld = [[FARBE[1] if random() < p else FARBE[0] for j in range(-1, Ymax + 1)] for i in range(-1, Xmax + 1)] | + | window(0, Xmax * skalierung, |
+ | # poröses Gestein wird zufällig erzeugt | ||
+ | # Der folgende Code verwendet, dass man beim Erzeugen von Listen | ||
+ | # zusätzlich eine " | ||
+ | feld = [[" | ||
+ | |||
+ | # Die folgenden beiden for-Schleifen erzeugen eine " | ||
+ | # aus Fels. (Das erspart später das Abfragen, ob man gerade einen Punkt am Rand betrachtet.) | ||
for i in range(-1, Xmax + 1): | for i in range(-1, Xmax + 1): | ||
- | feld[i][-1] = FARBE[1] | + | feld[i][-1] = " |
- | feld[i][Ymax] = FARBE[1] | + | feld[i][Ymax] = " |
for j in range(-1, Ymax + 1): | for j in range(-1, Ymax + 1): | ||
- | feld[-1][j] = FARBE[1] | + | feld[-1][j] = " |
- | feld[Xmax][j] = FARBE[1] | + | feld[Xmax][j] = " |
+ | # Zeichne das poröse Gestein. | ||
for i in range(0, Xmax): | for i in range(0, Xmax): | ||
for j in range(0, Ymax): | for j in range(0, Ymax): | ||
Line 101: | Line 113: | ||
# getKeyCodeWait() | # getKeyCodeWait() | ||
- | # Erstelle Liste blauer Felder in oberster | + | # Erstelle |
+ | # Alle " | ||
+ | # Für jedes Wasserfeld werden seine Koordinaten gespeichert. | ||
blaue_felder = [] | blaue_felder = [] | ||
for i in range(0, Xmax): | for i in range(0, Xmax): | ||
- | if feld[i][Ymax - 1] == FARBE[0]: | + | if feld[i][Ymax - 1] == " |
feld[i][Ymax - 1] = " | feld[i][Ymax - 1] = " | ||
blaue_felder.append([i, | blaue_felder.append([i, | ||
- | | + | # |
- | + | ||
# print(blaue_felder) | # print(blaue_felder) | ||
- | | + | |
+ | # Solange die Liste blauer Felder nicht leer ist, | ||
+ | # wird jeweils das erste blaue Feld betrachtet, eingefärbt und eventuelle Luftnachbarn | ||
+ | # werden hinten an die Liste drangehängt. | ||
while len(blaue_felder) > 0: | while len(blaue_felder) > 0: | ||
aktuell = blaue_felder.pop(0) | aktuell = blaue_felder.pop(0) | ||
Line 130: | Line 147: | ||
feld[x][y+1] = " | feld[x][y+1] = " | ||
blaue_felder.append([x, | blaue_felder.append([x, | ||
+ | # Folgende Zeile auskommentieren, | ||
delay(1) | delay(1) | ||
# getKeyCodeWait() | # getKeyCodeWait() | ||
- | | + | |
+ | # Textausgabe | ||
+ | text(Xmax * skalierung/ | ||
+ | |||
+ | # Warten, bis der Benutzer eine Taste drückt. | ||
getKeyCodeWait() | getKeyCodeWait() | ||
+ | |||
+ | # Fenster schliessen. | ||
dispose() | dispose() | ||
</ | </ |