-
Warmlaufen
- Benutzen Sie Python interaktiv, geben Sie Zahlen und Strings aus, verwenden Sie Python als Taschenrechner.
- Erstellen Sie das "Hello world" Programm im Editor,
dann mit dem Python Interpreter ausführen.
- Dasselbe mit der
Fahrenheit/Celsius Konversion
modifizieren Sie es: Schrittweite, Bereich, umdrehen in
Celsius
Fahrenheit.
- Quadrat– und Kubik–Zahlen
(a) Erstellen Sie ein Programm, das die Quadrat– und Kubik–Zahlen von 1 bis 150 ausgibt
und am Ende die Summe der Quadrat– bzw. Kubik–Zahlen
(b) Demonstrieren Sie folgende mathematische Identität für :
-
Integer vs Strings
Führen Sie die folgenden Python Anweisungen aus und erklären
Sie die Ausgabe bzw. die Unterschiede:
a = 1
print (a)
print (a+a)
b = '1'
print (b)
print (b+b)
- Fließkommazahlen
-
(a)
- Lassen Sie das Programm
TestFloat.py
laufen.
Warum "können Rechner nicht rechnen" ?
-
(b)
- Genauigkeit von
float Operationen:
Reduzieren Sie schrittweise
eps = 1.
while (...):
eps /= 2.
addieren Sie's zu
onePlusEps = 1.0 + eps
solange bis
if ( onePlusEps == 1.0 ) ...
-
Fibonacci–Zahlen
Fibonacci–Zahlen spielen eine wichtige Rolle in der Zahlentheorie und haben viele interessante
Eigenschaften. Sie sind definiert als:
(a) Erstellen Sie eine Liste der Fibonacci–Zahlen.
(b) Demonstrieren Sie dass gilt:
-
Bit Operationen
Programmieren Sie die binäre Ausgabe von Integerzahlen mit Hilfe von Bit Operationen.
z.B.: 5 -> 101
Hinweis: Bit
15 in
n abfragen mit z.B.:
if ( ( ( 1 <<15) & n ) != 0 )
-
Prim–Zahlen
(a) Erstellen Sie ein Programm, das testet ob eine gegebene Zahl eine Primzahl ist.
(b) Erweitern Sie das Programm, so dass es abzählt wieviele Primzahlen es gibt, die kleiner als
eine vorgegebene Zahl sind, z.B. .
Hinweis: Es geht nicht darum einen schnellen Algorithmus zu finden, machen Sie's so simpel
wie möglich.
(c) Sieb des Erasthones ist ein klassisches Verfahren zur Bestimmung aller
Primzahlen zwischen
und
. Der Algorithmus geht folgendermassen:
- Erstelle Liste aller Zahlen von
bis
- Nimm schrittweise jede Zahl
dieser Liste, falls sie nicht gestrichen ist.
- Streiche alle Vielfachen von
aus der Liste
Am Ende bleiben genau die Primzahlen übrig in der Liste.
(Tipp:
Test auf Vielfaches mit modulo Operator:
m%i == 0 )
- Lineare Algebra
(a) Vektoroperationen: Legen Sie 2 Arrays mit den Elementen
[ 0.3, 1.8, -2.2 ] bzw
[ -2.5, 3.8, 0.4] an und berechnen Sie das Skalarprodukt und das Vektorprodukt.
(b) Matrixmultiplikation:
Schreiben Sie ein Programm zur Multiplikation dieser beiden Matrizen:
C = [ [ 0.61, 0.24, 1.16 ],
[ 0.14, -0.82, 0.92 ],
[ -1.25, 0.96, -0.23 ] ]
D = [ [ 0.40, -0.68, -0.68 ],
[ 0.65, -0.75, 0.23 ],
[ 0.52, 0.51, 0.31 ] ]
- Freier Fall
Die Bewegungsgleichungen für den freien Fall sind (Erdbeschleunigung ):
Berechnen Sie und für den freien Fall eines Balles mit und
für 30 Zeitpunkte von
.
- Programmlogik bei Schleifen
Folgendes Beispiel ist ein funktionierendes Python Programm
(übernommen aus Learning Python).
In einer Liste soll nach einem bestimmten Wert gesucht werden.
Allerdings ist der Stil eher C++/JAVA.
L = [1, 2, 4, 8, 16, 32, 64]
X = 5
found = i = 0
while not found and i < len(L):
if 2 ** X == L[i]:
found = 1
else:
i = i+1
if found:
print ('at index ', i)
else:
print (X, ' not found')
In Python lässt es sich eleganter lösen, implementieren Sie verschiedene Varianten:
(a)
found und
if am Ende sind überflüssig wenn man stattdessen eine
while: ... else:
Kombination macht.
(b)
for Loop statt
while, ohne
indexing logic, stattdessen mit
L.index(X)
Position abfragen.
(c)
in Operator alleine:
if X in L: ...
-
Funktion für Fakultät
Schreiben Sie eine Funktion
fak( n),
zur Berechnung der Fakultät . Bis zu welchem lässt sich
für
float Typen berechnen ?
-
Rekursive Funktion
Ein Paradebeispiel für Rekursion ist Euklid's Algorithmus zur Bestimmung des
Größten Gemeinsamen Teilers zweier Zahlen
.
Erstellen Sie eine solche Funktion in Python.
- Mathematische Funktionen
In dem Python Module
math
(siehe Python math
oder
help(math) im Python Interpreter)
sind die Standard mathematischen Funktionen dokumentiert. Zur Benutzung in ihrem Programm
zunächst das Modul laden:
import math
und dann den Module-Namen
math. voranstellen, also z.B.
mypi = 4. * math.atan(1.)
Machen Sie sich mit den Funktionen vertraut, z.B.
- Was ist das Ergebnis von
math.sqrt(144), math.sqrt(-1.), math.log(10),
math.atan(1.) - math.pI/4., ...
- Zum Rechnen mit komplexen Zahlen gibt es das entsprechende Python Module
cmath.
Testen Sie diese Funktionen.
- Funktionen verwenden
In
fsortmax.py
ist eine Funktion definiert, die die 3 grössten Elemente aus einer
Liste zurückgeben soll. Leider funktioniert sie nicht. Was ist der Fehler?
- Funktionen als Argumente und lambda functions
(a) Implementieren Sie das vorgestellte Beispiel mit der Nullstellen-Suche,
benutzen Sie andere Funktionen,
, ...
(b) Machen Sie analog eine Funktion zur Integration mit Trapez– oder Simpson–Regel
und frei wählbarer Zahl von Stützstellen.
-
Einlesen und Arrays
In der Datei
numbers.dat
finden Sie eine Liste mit 100 Fließkommazahlen.
Lesen Sie diese ein und
(a) finden den kleinsten und größten Wert.
(b) erlauben Sie die Übergabe einer Zahl per Argument
und finden Sie die Zahl aus
numbers.dat, die am nächsten liegt.
(c) speichern Sie alle Zahlen in eine Liste von float Zahlen.
Sortieren Sie die Liste in absteigender Reihenfolge
und geben Sie sie aus.
-
Files kopieren
Schreiben Sie ein Programm zum kopieren von Files, z.B.
python3 FileCopy.py file1.txt file2.txt
soll file1.txt nach file2.txt kopieren.
- Advent of Code 2020 Aufgabe 1
Gutes Programmier-Training ist das alljährliche advent-of-code.
Hier die Einstiegs-Aufgabe aus 2020:
In aoc1.dat
finden Sie Liste von Zahlen.
(a) Finden Sie die beiden Zahlen deren Summe 2020 ergibt.
(b) Finden Sie die drei Zahlen deren Summe 2020 ergibt.
- Zeilen, Wörter, Zeichen zählen
Schreiben Sie ein Programm, das die Zahl der Zeilen, Wörter und Zeichen bestimmt für ein File das auf der
Kommandozeile angegeben wird, z.B.
python3 count.py /etc/passwd
-
String Funktionen
Für Python Strings sind eine Reihe nützlicher Hilfsfunktionen definiert, siehe
https://docs.python.org/3.10/library/stdtypes.html#str.
In kant.txt
finden Sie eine elektronische Fassung von Immanuel Kant's
"Kritik der reinen Vernunft".
(a) Wieviele Zeilen enthält der Text ?
(b) Finden Sie die String Funktion die Groß-Buchstaben in Klein-Buchstaben umwandelt
und transformieren sie damit den ganzen Text.
(c) Wie oft kommt das Wort
Vernunft in dem Text vor ?
- Strings und Sequenzen
Studieren Sie folgende sechs Code-Segmente,
d.h. überlegen Sie zunächst welches Ergebnis Sie jeweils
erwarten, probieren es dann aus und versuchen es zu verstehen
falls die Erwartung nicht eingetroffen ist.
#
"aaaaa".count("aaa")
#
#
x = ['a', 'b', 'c', 'd']
x[0:2] = []
#
x = ['a', 'b', 'c', 'd']
x[0:2] = ['q']
#
x = ['a', 'b', 'c', 'd']
x[0:2] = 'q'
#
x = ['a', 'b', 'c', 'd']
x[0:2] = 99
#
x = ['a', 'b', 'c', 'd']
x[0:2] = [99]
#
- Advent-of-Code 2019-4
https://adventofcode.com, further example: Day 4, 2019.
Guessing 6–digit password
- digit range: 197487-673251
- Two adjacent digits are the same (like 22 in 122345).
- Going from left to right, the digits never decrease; they only ever increase or stay the same (like 111123 or 135679).
Other than the range rule, the following are true:
- 111111 meets these criteria (double 11, never decreases).
- 223450 does not meet these criteria (decreasing pair of digits 50).
- 123789 does not meet these criteria (no double).
(a) How many different passwords within the range given in your puzzle input meet these criteria?
Further rule: the two adjacent matching digits are not part of a larger group of matching digits.
- 112233 meets these criteria because the digits never decrease and all repeated digits are exactly two digits long.
- 123444 no longer meets the criteria (the repeated 44 is part of a larger group of 444).
- 111122 meets the criteria (even though 1 is repeated more than twice, it still contains a double 22).
(b) How many different passwords within the range given in your puzzle input meet all of the criteria?