Ziel dieser Lektion(en) wird sein, dass wir das Sieb des Eratosthenes implementieren. Vereinfacht gesagt, handelt es sich beim Sieb des Eratosthenes um eine (langsame) Methode, alle Primzahlen kleiner einer Zahl $n$ zu bestimmen.
* *
. Um also $3^2$ zu berechnen, gibt man 3 2
ein.7%3
z.B. ergibt den Rest der bei der Division von 7 durch 3 entsteht.[1,3,2,1,7,-1,7,2.1]
max
nicht sondern ausschliesslich die Vergleichsoperatoren <
und >
sowie if
o.ä. from random import randint #Funkion zum Erzeugen von zufälligen Listen def zufallszahlen(n): zufallsliste = [randint(0, 1000) for i in range(n)] return zufallsliste liste = zufallszahlen(100) print(liste) print(len(liste)) print(range(len(liste))) for i in range(len(liste)): #ergänze den Code.
def maximumliste(liste): #Hier kommt dein Code return(maximalerwert)
for
-Schlaufe. Nenne deine Funktion innereFunktion
. Der Output deiner Funktion sollte z.B. sein innereFunktion(4) 0 1 2 3
innereFunktion
von oben. Die horizontalen Abtrennungen kann man mit print(“======”)
erreichen. 0 ====== 0 1 ====== 0 1 2 ====== 0 1 2 3 ====== 0 1 2 3 4 ======
innereFunktion
.True
: Du kannst z.B. isprime = [True for i in range(n+1)]
verwenden1). An der $i$-ten Stelle der Liste, steht also die natürliche Zahl $i$. Die ersten beiden $i=0$ und $i=1$ «übergehen» wir in der Schlaufe einfach.False
ändern, wenn es keine Primzahl ist. Der range
-Befehl, lässt beliebige Inkremente2) zu: print(range(min,max,delta))
listet alle Zahlen zwischen min
und max
mit Abstand delta
auf. Kopiere diesen Code, ersetze die Variablen durch Werte, und stelle sicher, dass du den Befehl verstehst. import time start_time = time.time() # some code stop_time = time.time() print(stop_time-start_time)
Die Darstellung als Streudiagramm (Scatterplot) kann z.B. hier abgeschaut werden.
Bearbeite das Skript |Simulationen. Wenn du damit fertig bist, wähle ein Arbeitsblatt deiner Wahl: |Arbeitsblätter
Wähle eine App / Firma / Tool deiner Wahl. Versuche herauszufinden, wie du deine Daten herunterladen kannst. Häufig sind Stichworte wie “data request” bei Google hilfreich.
Am Beispiel von Youtube-Daten (Watch-History) können die eigenen Verhaltensmuster mit Excel analysiert werden.
Analog zur Analyse von Youtube-Daten können auch Instagram-Daten analysiert werden. Zu diesem Zweck müssen die Daten bei Instagram heruntergeladen werden: Download-Tool (HTML wählen).
Win+E, auf Laufwerk C: navigieren und dort Ordner temp
o.ä. erstellen. Dann können die Dateien dort gespeichert werden. Achtung: Unbedingt wieder löschen (Shift-Delete; oder Papierkorb leeren) vor Log-out. Dieser Ordner ist sonst für alle ersichtlich.
import re # Regular Expressions import datetime # Datum/Zeit import os # Files suchen # Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor. rootdir = "C:/pfad/zum/entpackten/instagram/ordner/" # Resultat, das am Schluss geschrieben werden soll csv = "" # Comma separated values # Wie viele Kontrollausgaben? debug = 10 # Alle HTML-Dateien im Verzeicznis anzeigen for root, dirs, files in os.walk(rootdir): for file in files: if file.endswith(".html"): filepath = os.path.join(root, file) # Datei oeffnen f = open(filepath, "r") html = f.read() # Alles einlesen f.close() # Datei schliessen # Datum der Form 30.12.2021, 22:13 einlesen # Alle nötigen Angaben werden in Klammern "ge-captured" daten = re.findall("(\d{1,2}).(\d{1,2}).(\d{1,4}), (\d{1,2}):(\d{1,2})", html) if(debug>0): print(file,": ",len(daten)) debug-=1 # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag for d in daten: # Einträge in Zahlen umwandeln # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt # Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42. e = [int(x) for x in d] if debug>0: # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren print(e) # [1, 6, 2021, 21, 23, 12] debug -= 1 # Um 1 vermindern # Datum daraus generieren (macht die Datumsmanipulation einfacher). # Jahr, Monat, Tag, Stunde, Minute, Sekunde datum = datetime.datetime(e[2], e[1], e[0], e[3], e[4],0) if debug>0: # Ausgabe zur Kontrolle, produziert folgendes Format print(datum) # 2021-01-06 21:23:12 debug -= 1 # Um 1 vermindern # Wochentag (Mo=0, Di=1, ..., So=6) # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: https://docs.python.org/3/library/datetime.html#datetime-objects wday = datum.weekday() # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp # \n heisst neue Zeile. csv += datum.strftime("%Y-%m-%d %H:%M:%S;"+os.path.splitext(file)[0]+"\n") #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann. # Ausgabe in Datei schreiben f = open("resultat.csv", "w") f.write(csv) f.close()
Dokumentation der eigenen Analyse in einem PDF-Dokument, welches
PrtScr
oder Alt+PrtScr
) woher die Daten kommen und wie diese aussehenBewertungskriterien:
PrtScr
erstellt ein Bildschirmfoto des ganzen Bildschirms in der Zwischenbalge (CTRL
+V
zum Einfügen)Alt
+PrtScrn
erstellt ein Bildschirmfoto des aktiven Fensters in der Zwischenbalge (CTRL
+V
zum Einfügen)Win
+PrtScrn
erstellt ein Bildschirmfoto und speichert es im Bilder-Ordner von WindowsWin
+Shift
+S
öffnet einen Dialog um ein Bildschirmfoto aufzunehmen und einen Bereich auszuwählen und speichert es dann in der Zwischenbalge (CTRL
+V
zum Einfügen)Module können in diesen zwei Arten verwendet werden:
from random import * random()
oder
import random random.random()
Beide Varianten rufen am Schluss die Funktion random()
auf.
Auf den Schulcomputern ist der Task-Manager für Sie leider gesperrt. Hier ist der Work-Around:
Öffnen Sie die Powershell Konsole (Win+Q; PowerShell) und geben dann das folgende ein:
stop-process -name javaw
Um TigerJython zu beenden, führen Sie obige Datei mit PowerShell aus: Rechtsklick → Ausführen mit PowerShell
Sie können aber auch einfach obige Zeile in PowerShell eingeben und ausführen (Enter).