Sonntag, 6. März 2011
Übungsbeispiele zu Sequenzen, Schleifen und Funktionen in Python (POS1: 1B)
Hier finden Sie eine Reihe von Aufgabenstellungen als Übung zur nächsten praktischen Arbeit.
Gegeben sind minimale Funktionsrümpfe mit der Aufgabenstellung als DocString.
Die Funktionen sind ohne Standardmethoden bzw. Funktionen zu implementieren (ausgenommen die Funktion
Schreiben Sie zu den Funktionen jeweils passende Testprogramme.
Gegeben sind minimale Funktionsrümpfe mit der Aufgabenstellung als DocString.
Die Funktionen sind ohne Standardmethoden bzw. Funktionen zu implementieren (ausgenommen die Funktion
len()). Sollte es eine Standardfunktion zur Lösung der Aufgabe geben, verwenden Sie diese, um das Ergebnis zu prüfen. Bereiche ([von:bis]) dürfen verwendet werden, sofern sie benötigt werden.def isint(string)
"""prüft, ob der String eine ganze Zahl ist (Vorzeichen optional,
nur Ziffern)"""
passdef isintb(string, basis)
"""prüft, ob der String eine ganze Zahl zur Basis basis ist (Vorzeichen
optional, nur Ziffern)"""
passdef isnum(string)
"""prüft, ob der String eine Zahl ist (Vorzeichen optional, Ziffern und
Komma)"""
passdef horner(zahl, basis):
"""berechnet Dezimalzahl aus zahl (String) zur Basis basis.
liefert Zahl."""
passdef sumdigits(zahl):
"""Berechnet die Ziffernsumme aus der gegebenen Zahl (int)"""
passdef sumdigits_s(string):
"""Berechnet die Ziffernsumme aus der gegebenen Zahl (str), wenn
es überhaupt eine Zahl ist. Liefert -1, wenn keine gültige Zahl"""
passdef isipv4(string):
"""Prüft, ob der gegebene String eine IPv4-Adresse enthält.
IPv4-Adressen sind 4 Zahlen zwischen 0 und 255, die durch einen
Punkt getrennt sind.
Beispiele: 127.0.0.1, 193.170.149.129, 81.200.64.185
Ungültige: 81.2010.64.185, 123.23.12, 127,0,0,1"""
passdef anz_vokale(string):
"""Zähle die Selbstlaute im String und liefere Anzahl zurück"""
passdef anz_zahlen(string):
"""ermittelt die Anzahl der ganzen Zahlen im String. Eine Zahl
ist eine ununterbrochene Folge von Ziffern.
Beispiel: anz_zahlen("x 34 3 12k33 44 hallo 23") liefert 6"""
passdef sum_zahlen(string):
"""ermittelt die Summe der ganzen Zahlen im String. Eine Zahl
ist eine ununterbrochene Folge von Ziffern.
Beispiel: anz_zahlen("x 34 3 12k33 44 hallo 23") liefert 149"""
passdef iskonto(string):
"""Prüft, ob der String eine gültige Kontonummer enthält. Dabei
gelten folgende Regeln:
1. genau 9 Ziffern (es dürfen Leerzeichen dazwischen sein
2. die letzte Ziffer ist eine Prüfziffer und es gilt
Die Kontonummer ist genau 9 Stellen lang und ist dann richtig,
wenn die folgendermaßen gebildete Summe auf Null endet:
Ziffern mit ungeradem Index werden addiert(=Teilsumme1);
Ziffern mit geradem Index werden verdoppelt und das jeweilige
Produkt addiert, wenn es einstellig ist, andernfalls wird die
Quersumme des Produkts addiert(=Teilsumme2);
Summe= teilsumme1 + Teilsumme2
Beispiel:
123456782 1+ 3+ 5+ 7+ 2 = 18 Teilsumme1
2*2+ 4*2+ (1+2)+ (1+6) = 22 Teilsumme2
6*2=12 8*2=16
------
40 Summe mod 10= Null
Beispiele für Kontonummern:
697199107 richtige Kontonummer
723016699 falsche Kontonummer
"""
passdef reverse_s(string):
"""liefert String in umgekehrter Reihenfolge zurück"""
passdef toupper(string):
"""liefert String in Großbuchstaben zurück"""
passdef tolower(string):
"""liefert String in Kleinbuchstaben zurück"""
passdef isupper(string):
"""prüft, ob String nur Großbuchstaben enthält"""
passdef islower(string):
"""prüft, ob String nur Kleinbuchstaben enthält"""
passdef ispalindrom(string):
"""Prüft, ob der String ein Palindrom ist (von vorne und hinten
gelesen gleich)."""
passdef ispalindrom_l(liste):
"""Prüft, ob die Liste von vorne und hinten gelesen gleich ist."""
passdef reverse_l(liste):
"""liefert die Liste in umgekehrter Reihenfolge zurück"""
passdef sum(liste):
"""liefert die Summe aller Zahlen in der Liste"""
passdef mittelwert(liste):
"""liefert den Mittelwert (Durchschnitt) aller Zahlen in der Liste"""
passdef rmdups(liste):
"""(ReMove DUPlicates) liefert Liste, aus der alle Vielfachen entfernt
(hintereinander).
Beispiele: [1, 2, 2, 2, 5, 2, 3, 2, 2, 23] -> [1, 2, 5, 2, 3, 2, 23]
[99, 99, 23, 99, 99, 12, 2] -> [99, 23, 99, 12, 2]
[] -> []
[1, 2, 4, 10] -> [1, 2, 4, 10]"""
passdef rmalldups(liste):
"""(ReMove ALL DUPlicates) liefert Liste, aus der alle Vielfachen
entfernt (müssen nicht hintereinander stehen).
Beispiele: [1, 2, 2, 2, 5, 2, 3, 2, 2, 23] -> [1, 2, 5, 3, 23]
[99, 99, 23, 99, 99, 12, 2] -> [99, 23, 12, 2]
[] -> []
[1, 2, 4, 10] -> [1, 2, 4, 10]"""
passdef binsearch(liste, such):
"""liefert den Index von such in der sortierten Liste liste oder -1,
wenn such in liste nicht vorkommt. Es ist die binäre Suche anzuwenden!
"""
passdef sumdigits(zahl):
"""Berechnet die Ziffernsumme aus der gegebenen Zahl (int)"""
passdef sumteilbar(liste, teiler):
"""Berechnet die Summe aller durch teiler teilbaren Zahlen der Liste"""
passdef issorted(liste):
"""Prüft, ob die Liste sortiert ist, d.h. ob e1 <= e2 <= e3 <= ... <= en
e1, e2, ... en sind die n Elemente der Liste mit Länge n"""
passdef printlxl(liste1, liste2):
"""gibt eine Multiplikationstabelle der beiden Listen aus.
Zum Beispiel:
a = [1, 2, 4, 5]
b = [3, 2, 2]
printlxl(a, b) gibt dann folgendes aus:
3 2 2
6 4 4
12 8 8
15 10 10
Die erste Liste bestimmt die Anzahl der Zeilen, die zweite die Anzahl
der Spalten. Es wird immer ein Element der ersten Liste mit einem der
zweiten Liste multipliziert.
"""
passdef lxl(liste1, liste2):
"""liefert eine Multiplikationstabelle der beiden Listen (Liste von
Listen).
Zum Beispiel:
a = [1, 2, 4, 5]
b = [3, 2, 2]
lxl(a, b) liefert folgende Liste zurück:
[[3, 2, 2], [6, 4, 4], [12, 8, 8], [15, 10, 10]]
übersichtlich formatiert:
[[3, 2, 2],
[6, 4, 4],
[12, 8, 8],
[15, 10, 10]]
Die erste Liste bestimmt die Anzahl der "Zeilen", die zweite die Anzahl
der "Spalten". Es wird immer ein Element der ersten Liste mit einem der
zweiten Liste multipliziert.
"""
passSchreiben Sie zu den Funktionen jeweils passende Testprogramme.
Labels: Aufgabe, POS1-1, Python
Abonnieren Kommentare [Atom]
Kommentar veröffentlichen