Übungen / Aufgaben zu Python

5 Lösungen Lösungen öffentlich
Iteriertes Querprodukt
Anfänger - Python von JKooP - 24.01.2021 um 16:44 Uhr
Das Querprodukt einer Zahl ähnelt der Berechnung der Quersumme,
nur dass die Ziffern nicht addiert, sondern miteinander multipliziert werden.

3784 => 3 * 7 * 8 * 4 = 672

Nun soll aus dem Ergebnis wiederum das Querprodukt berechnet werden.

672 => 6 * 7 * 2 = 84

Und immer so weiter, bis nur noch eine Ziffer übrigbleibt.

84 => 8 * 4 = 32
32 => 3 * 2 = 6

Die Ziffer, die am Ende übrigbleibt, nennt man „multiplikative Ziffernwurzel“.
Die Anzahl der Schritte (Iterationen) wird als "Beharrlichkeit" bezeichnet.

Schreibe ein Programm, mit dem es möglich ist, sowohl die Beharrlichkeit als auch die multiplikative Ziffernwurzel einer beliebigen Integer- Zahl auszugeben.

Eine ausführliche Beschreibung findet man hier.

Viel Spaß
1 Lösung Lösung öffentlich
Gleichwertige Zahlenpaare zählen/auflisten
Anfänger - Python von JKooP - 09.01.2021 um 16:17 Uhr
Erstelle eine Methode/Funktion, mit der es möglich ist, aus einem beliebig großen Array/Liste
die Anzahl aller gleichwertigen Zahlenpaare auszugeben.
Wer möchte, kann natürlich die Zahlenpaare bzw. Indizes zusätzlich mit ausgeben.

Beispiele:

[1, 2, 3, 1, 1, 3] => 4 gleiche Zahlenpaare
mit den Indizes: (0, 3), (0, 4), (3, 4), (2, 5)
und den Lösungen: (1, 1), (1, 1), (1, 1), (3, 3)

[1, 1, 1, 1] => 6 gleiche Zahlenpaare
mit den Indizes: (0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)
und den Lösungen: (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)

[1, 2, 3, 4] => 0 gleiche Zahlenpaare

Hier gibt es verschiedene Herangehensweisen:

Lösung 1 (einfach): Verschachteln mehrerer Schleifen
Lösung 2 (schwieriger): nur eine Schleife

Vielleicht kann man es sogar mittels Fakultät und Binomialkoeffizient berechnen?!
Ich habe dafür ad hoc auch noch keine Lösung. Es gibt hier bestimmt die eine oder andere gute Idee.

Viel Spaß
2 Lösungen Lösungen öffentlich
Feiertage in Deutschland
Anfänger - Python von JKooP - 03.01.2021 um 15:06 Uhr
Die Feiertage sind vorüber – doch die nächsten stehen schon vor der Tür.
Da kann es nicht schaden, mal einen Blick in die Zukunft zu werfen.

Es soll ein Programm entwickelt werden, mit dem es möglich ist,
alle Feiertage (mit Bezeichnung und Datum) eines gewählten Bundeslandes für eine bestimmte Jahreszahl auszugeben.

Dabei sollen sowohl die festen als auch die beweglichen Feiertage berücksichtigt werden.
Ebenfalls soll es die Möglichkeit geben, die gesetzlichen Feiertage für alle Bundesländer auszugeben.

Wer möchte, kann natürlich auch noch die regionalen Feiertage wie z.B. Rosenmontag oder die - wie für einige Beamte üblichen - Feiertage wie z.B. Heilig Abend und Silvester einbringen.

Beispiel für Aufruf:

[datum, bezeichnung] FEIERTAGE(jahr, bundesland, optional: beamter/rosenmontag)

Eine Übersicht zu den einzelnen Bundesländern und den gesetzlichen Feiertagen gibt es hier.
5 Lösungen Lösungen öffentlich
Berechnung Kfz-Steuer (Deutschland 2021)
Anfänger - Python von JKooP - 15.12.2020 um 19:35 Uhr
Schreibe eine Methode/Funktion, mit der es möglich ist, die Kfz- Steuer sowohl für Benzin-, als auch Dieselfahrzeuge
ab dem 01.01.2021 für Deutschland zu berechnen.

Übergeben werden sollen die Parameter: Otto- o. Dieselfahrzeug, Hubraum in ccm, CO2 in g.

Als Ergebnis soll die Gesamtsteuer in Euro fürs Jahr ausgegeben werden.

Eine ausführliche Berechnungshilfe findet man hier!

Viel Spaß
1 Lösung Lösung öffentlich
Ternäre Logik (Dreiwertige Logik)
Fortgeschrittener - Python von JKooP - 02.12.2020 um 17:20 Uhr
Statt der bekannten Wahrheitswerte TRUE (t) und FALSE (f) gibt es noch einen weiteren Wert: DON’T CARE (x).
Dies wird als Dreiwertige Logik bezeichnet.

für x gilt zusätzlich bei Junktoren zur bekannten Aussagenlogik:

Negation:
NOT x => x

Konjunktion:
t AND x => x
f AND x => f
x AND x => x

Disjunktion:
t OR x => t
f OR x => x
x OR x => x

und darüber hinaus:

Inklusion:
A -> B => (NOT A) OR B

Äquivalenz:
(A <-> B) => (A -> B) AND (B -> A)

Es soll ein Programm erstellt werden, mit dem es möglich ist,
die o.a. ternäre Logik - auch innerhalb von Inklusion und Äquivalenz - abzubilden.
Hier bieten sich zur Lösung des Problems sowohl Methoden bzw. Funktionen,
als auch, wenn es die Programmiersprache zulässt, Operatorüberladungen an.

Beispiele:
t OR (NOT x) == t
NOT(x) OR (NOT(t)) == x
x -> t == t
(x OR f) <-> (x -> (f AND (NOT x))) == x

Viel Spaß
5 Lösungen Lösungen öffentlich
Zahlenpyramide (Reihenausgabe)
Anfänger - Python von JKooP - 23.11.2020 um 16:23 Uhr
Es soll per Funktion/Methode eine Zahlenpyramide (siehe jpg) mit den Ziffern 0-9 und der Höhe 10 erstellt werden.

Dies soll bewerkstelligt werden durch:

Aufgabe 1: (leicht)
mehrerer ineinander verschachtelter Schleifen,

Aufgabe 2: (schwieriger)
nur eine Schleife.

Viel Spaß
5 Lösungen Lösungen öffentlich
Zahlentreppe (Reihenausgabe)
Anfänger - Python von JKooP - 23.11.2020 um 15:11 Uhr
Es soll per Funktion/Methode eine Zahlentreppe mit den Ziffern 0-9 und der Höhe 10 erstellt werden.

0
01
012
0123
01234
012345
0123456
01234567
012345678
0123456789

Dies soll bewerkstelligt werden durch:

Aufgabe 1: (leicht)
mehrerer ineinander verschachtelter Schleifen,

Aufgabe 2: (schwieriger)
nur eine Schleife.

Viel Spaß
5 Lösungen Lösungen öffentlich
Kleinste positive Zahl in einem Array
Fortgeschrittener - Python von JKooP - 21.11.2020 um 11:42 Uhr
Gegeben sei ein (beliebig großes) unsortiertes Integer- Array welches sowohl aus positiven als auch negativen Zahlen besteht.
Ermittelt werden soll die erste fehlende positive Zahl im Array.

Beispiele:
arr = [1, 2, 0] sortiert: [0, 1, 2]
Lösung: 3

arr = [5, 4, -2, -1, 1] sortiert: [-2, -1, 1, 4, 5]
Lösung: 2

arr = [6, 7, 8, 9, 10]
Lösung: 1

arr = [-4, -2, -1]
Lösung: 1

arr = [1, 2, 3, 4, 2147483647, 8]
Lösung: 5

arr = []
Lösung: 1

Viel Spaß
5 Lösungen Lösungen öffentlich
Zielwertsuche in einem sortierten Array
Fortgeschrittener - Python von JKooP - 21.11.2020 um 09:10 Uhr
Aufgabe 1 (leicht)
In einem beliebig großen sortieren Array soll das erste Vorkommen desjenigen Zahlenpaares per Index ausgegeben werden, bei dem die Summe dem gesuchten Zielwert entspricht.
Dabei kommt jede Zahl nur einmal im Array vor.

arr = [3, 4, 15, 22]
target = 7
Index = [0, 1] (3+4)

arr = [1, 3, 4, 6]
target = 8
Index = [0, 0] oder NULL/Nothing (keine Lösung)

Aufgabe 2 (mittel)
Wie Aufgabe 1, jedoch können Zahlen doppelt vorkommen.

arr = [4, 4, 5, 6]
target = 8
Index = [0, 1] (4+4)

Aufagbe 3 (schwer)
In einem beliebig großen sortieren Array sollen alle Vorkommen derjenigen Zahlenpaare per Indizes ausgegeben werden, bei denen die Summen dem gesuchten Zielwert entsprechen. Dabei können alle Zahlen mehrfach vorkommen.

arr = [1, 3, 4, 6]
target = 7
Indizes = [0, 3] (1+6), [1, 2] (3+4)

Noch ein wenig schwieriger:
arr = [4, 4, 4, 5, 6]
target = 8
Indizes = [0, 1] (4+4), [0, 2] (4 + 4), [1, 2] (4 + 4)

Für alle Aufgaben gilt:
Dopplungen wie [1, 3] und [3, 1] gelten als gleichwertig und sollen nicht ausgegeben werden.

Viel Spaß
4 Lösungen Lösungen öffentlich
Median zweier zusammengefügter Arrays
Fortgeschrittener - Python von JKooP - 21.11.2020 um 07:46 Uhr
Es soll der Median (Zentralwert) eines sortierten Arrays,
das aus zwei (beliebig großen) zusammengefügten sortierten Arrays besteht, ermittelt werden.

Beispiele:
arr1 = [1, 3] arr2 = [2]
mergeSorted = [1, 2, 3] -> Median = 2

arr1 = [2, 4] arr2 = [1, 3]
mergeSorted = [1, 2, 3, 4] -> Median = 2.5
(wenn kein Zentralwert vorhanden ist, dann wird das arithmetische Mittel der beiden mittleren Zahlen ermittelt)
-> (2+3) / 2 = 2.5

Weitere Beispiele:
[0, 0] [0, 0] -> 0
[] [4] -> 4
[3] [] -> 3
[] [] -> 0
[-4, 4] [-2, 1] -> [-4, -2, 1, 4] -> -0.5

Fortgeschrittene können die Funktion/Methode dahingehend erweitern,
sodass sowohl mindestens 2 Arrays aufgenommen werden,
als auch auch ein Array bzw. eine Liste von Arrays verarbeitet werden kann.


Viel Spaß
2 Lösungen Lösungen öffentlich
Landeablage Fallschirmspringer
Fortgeschrittener - Python von JKooP - 16.11.2020 um 12:34 Uhr
Fallschirmspringer versuchen stets ihre vorgegebene Landezone (rot) zu treffen. Dennoch kommt es häufiger vor, dass aufgrund von unvorhergesehenen Einflüssen wie Scher- und Bodenwinde diese auch mal verfehlt wird (blau, orange, grün). Landeablagen, die radial einen Wert größer als 100m haben müssen dokumentiert werden. Dabei werden die Entfernung und die Richtung zum Soll- Ziel ermittelt. Die Koordinate (UTM) der Soll-Landezone ist bekannt.
Der Ist- Landepunkt wird mit einem GPS- Modul als Koordinate im UTM- Verfahren (WGS-84) ermittelt. Die Skizze im Anhang soll dies verdeutlichen.

Beispielkoordinate:

Ost: 374200
3: 100km- Quadrat
74200: Angabe in Meter -> 74200m (für Berechnung wichtig)

Nord: 5500150
55: 100km- Quadrat
00150: Angabe in Meter -> 150m (für Berechnung wichtig)

UTM: 374200 5500150


Beispiel zur Berechnung:

Soll- Koordinate: [Ost: 383000, Nord: 5500010]
Ist- Koordinate: [Ost: 383320, Nord: 5500220]

Wie groß sind die Landeablage in Meter und die Richtungsablage in Grad zu geografisch Nord?
Schreibe ein Programm, mit dem es möglich ist, jegliche Ablage in beliebige Richtung zu bestimmen.
2 Lösungen Lösungen öffentlich
Bonusaufgabe 5 (schwer) - Permutationen.
Profi - Python von Yali23 - 09.11.2020 um 17:21 Uhr
Implementieren Sie eine rekursive Funktion permute, die alle Permutationen der Elemente eines sequentiellen Datentyps (Slice-Operator wird unterstützt) bestimmt und als Elemente einer Liste ausgibt.

Beispieloutput:

Quellcode ausblenden Python-Code
permute("abc")
['abc', 'acb', 'bac', 'bca', 'cab', 'cba']


# Führen Sie diese Zelle aus, um Ihre Funktion zu testen.
# Wenn das Ausführen dieser Zelle zu Fehlern führt, dann ist Ihre Implementierung vermutlich nicht korrekt. 

assert sorted(permute("abc")) == sorted(['abc', 'acb', 'bac', 'bca', 'cab', 'cba'])
assert sorted(permute("ab")) == sorted(['ab', 'ba'])
assert sorted(permute([1, 2])) == sorted([[1, 2], [2, 1]])
assert sorted(permute((1, 2, 3))) == sorted([(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)])