Projektdefinition - Beschreibung: Matura-ähnliche Aufgaben in Python programmieren
In diesem Projekt hatte jeder die Aufgabe, drei Aufgaben mittels Python zu implementieren. Diese sollten Schülergerecht aufbereitet sein und von der Schwierigkeitsform passend sein. Nachfolgend sind meine Aufgaben angeführt.
Markus Wieser:
Schreibe in Programm, das das Heron-Verfahren für Wurzelziehen implementiert:
Als Eingabe benötigt das Programm eine Zahl und die Anzahl an Durchläufen (Genauigkeit),
als Ausgabe liefet es die Wurzel der Zahl
# Function
def heron(side, accuracy): #Seitenlänge und Anzahl der Durchläufe
if accuracy > 0: #Wenn Genauigkeit >0
prevres = heron(side, accuracy - 1) #rekursiver Aufruf der Funktion
return 0.5 * (prevres + side / prevres) #Rückgabe
else:
return side
# Main
def main():
num = int(input("Number:"))
acc = int(input("Accuracy:"))
print("Squareroot of", num, "is", heron(num, acc))
main()
Schwierigkeitsgrad: mittel
--------------------------
Markus Wieser:
Schreibe ein Programm, das das Joephus-Problem löst.
Das Josephus Problem lautet folgendermaßen: Es werden n Objekte im Kreis aufgestellt.
Jedes k-te Element wird entfernt.
Welches Objekt bleibt als letztes übrig und in welcher Reihenfolge werden die Objekte gelöscht?
def josephus(n, k):
active = [] #Array aller Objekte die im Spiel sind
deleted = [] #Array aller gelöschten Objekte
for i in range(n): #Zählschleife von i bis n
active.append(i + 1) #füge i+1 zur aktiven Liste hinzu
act = k - 1 #setze act gleich k-1
while (len(active) > 1): #Solange die Liste der aktiven Objekte größer 1 ist
deleted.append(active.pop(act)) #füge das k-1. Element der Lite gelöscht hinzu
act += k - 1 #zähle k-1 zu act dazu
act = act % len(active) #Modulo der aktiven Elemente
return active + deleted #das erste Element des Arrays ist die etzte übrige Zahl,
der Rest die Gelöschten in er Löschungsreihenfolge
def print_josephus(a):
b = []
print("Last: ", a[0])
for i in range(1, len(a)):
b.append(a[i])
print("Sequence of deleted: ", b)
# Main
def main():
num = int(input("Total Number:"))
delete = int(input("X-th to be deleted:"))
print_josephus(josephus(num, delete))
main()
Schwierigkeitsgrad: mittel
--------------------------
Markus Wieser:
Schreibe ein Progamm das alle Primzahlen bis zu einer bestimmten Zahl (maximum) angibt.
def primes_sieve_eratosthenes(maximum):
newmax = maximum + 1 #Größe des Arrays definieren
noprime = [False] * newmax #Boolean Array mit n Elementen (n = eingegebenes Max)
prime = [] #Array für die Primzahlen
for i in range(2, newmax): #im Bereich von 2 bis zum Maximum
if noprime[i]: #Wenn eine Zahl keine Primzahl ist (noprime is True)
continue
for f in range(i * 2, newmax, i): #wähle alle Vielfachen von i aus
noprime[f] = True #Setze noprime auf True
prime.append(i) #Füge i zu der Liste der Primzahlen hinzu
return prime #gib die Liste der Primzahlen zurück
# Main
def main():
limit = int(input("Please insert the max integer for search: ")) #Obergrenze eingeben
print(primes_sieve_eratosthenes(limit)) #ausgeben der Liste auf der CMD
main()
Schwierigkeitsgrad:mittel
-------------------------