Herumspielen mit Mengen, Listen, Dicts
Inhalt
Herumspielen mit Mengen, Listen, Dicts¶
erste Fingerübungen¶
Gegeben sei ein String x, z.B. x = "1234"
. Diesen String nun umwandeln in
eine Zahl (Was passiert, wenn x keine Zahl ist?)
Menge, Liste
sortierte Menge
Quersumme, iterierte Quersumme
dict mit Häufigkeit jeder Ziffer
Mengen¶
prim_19 = [ 2, 3, 5, 7, 11, 13, 17, 19 ] # 1 ist per Def keine Primzahl
odd_19 = [ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 ] # EN odd: ungerade
Mit Mengen einfach zu lösen:
ungerade Zahlen, die auch prim sind
ungerade Zahlen, die nicht prim sind
Primzahlen, die nicht ungerade sind
Listen¶
Erzeuge programmatisch:
obige Liste
odd_19
programmatischalle geraden Zahlen von 1 bis 20, die keine Primzahlen sind
Liste von Primzahlen, die einen Nachfolger mit Abstand 2 haben:
[ 3, 5, 11, 17 ]
Liste von 2-Tupeln von Primzahlen mit Abstand 2:
[ (3, 5), (5, 7), ... ]
Erzeuge:
Eine Liste mit n verschiedenen Integer-Zufallszahlen zwischen 10 und 20, mit verschiedenen Funktionen aus https://docs.python.org/3/library/random.html
Elemente hinzufügen / entfernen¶
Ziffern = { '0', '1' } # eine Menge
Zahlen = [ 1, 3, 2 ] # eine Liste
wie viele Elemente sind enthalten?
ist die
9
(resp. die'9'
) enthalten?jeweils die
4
(resp. die'4'
) hinzufügendie Menge
{'5', '6'}
(resp. die Liste[ 5, 6 ]
) hinzufügen
Alles auch “kreuzweise”, d.h. die Menge zur Liste hizufügen etc.
Dicts¶
Sprechen = { # ein dict von dicts
1: {'de': 'eins', 'en': 'one' },
2: {'de': 'zwei', 'en': 'two' },
3: {'ru': 'три', 'gr': 'τρία' },
0: {'ru': 'ноль' }}
Variablen miteinander abgleichen:
Welche Zahlen gibt es in
Sprechen
?Welche Sprachen gibt es in
Sprechen
?Wie viele verschiedene Sprachen gibt es in
Sprechen
?Welche Zahlen aus
Sprechen
kommen inZahlen
nicht vor?Ist
7
inSprechen
enthalten?Sprechen[7]
ist undefiniert und wirft einen Fehler: Wie gibt man einen DefaultwertNone
zurück?
Gesucht ist ein Dictionary Sprechen_ru
, in dem zu allen russischen Zahlen die Aussprache genannt ist, z.B.
Sprechen_ru = {3: 'три', 0: 'ноль'}
:
Erzeuge dieses Dict automatisch aus
Sprechen
.Mache das für alle Sprachen, erzeuge also ein dict:
Aussprache = { 'ru' : {3: 'три', 0: 'ноль'}, 'en' : ... }
Bingo¶
Fingerübungen zur Bingo-Aufgabe aus Python 1
Die “Bingo-Aufgabe”: Erzeugen Sie Lose für das Spiel Bingo. Repräsentieren Sie ein Los als eine Liste von Listen mit jeweils 5 verschiedenen Zahlen, die die Spalten eines Bingo-Loses repräsentieren: Erste Spalte 5 Zahlen zwischen 1 und 15, zweite Spalte 5 Zahlen zwischen 16 und 30, usw.
bingo_los = [ [15, 9, 2, 12, 6], [27, 16, ...], ... ]
Vorübung¶
Gegeben sei ein dict listen_dict
:
prim = [2, 3, 5, 7, 11, 13]
listen_dict = {}
listen_dict["prim"] = prim
selektieren Sie die zweite Primzahl aus dem dict
listen_dict
fügen Sie zu
prim
die Primzahl17
hinzuwie lautet nun die höchste Primzahl im
listen_dict
?
Listen erzeugen¶
Erzeuge:
a) eine (sortierte) Liste mit Zahlen von 16-30
Sei liste_a = ...
Ihre Lösung aus Teilaufgabe a). Ändern Sie Ihren Code so, dass Sie nicht für jede Teilaufgabe eine eigene Variable anlegen, sondern mit dem dict listen_dict
arbeiten: listen_dict['a'] = ...
.
Konsultiere https://docs.python.org/3/library/random.html, dann weitere Aufgaben:
b) Erzeugen Sie eine Liste mit 5 zufälligen Zahlen “mit zurücklegen” zwischen 16 und 30 (
random.randint()
)c) Schütteln Sie die (sortierte) Liste
listen_dict['a']
durcheinander (random.shuffle()
)d) Erzeugen Sie eine Liste mit Zahlen zwischen
1
und61
mit Schrittweite15
nachlesen:
random.choices()
random.shuffle()
random.sample()
Aus einer Liste von Zahlen:
wiederholt eine bestimmte Zahl auswählen:
random.choice()
… und entfernen
zufällig ein n bestimmen, und die n-te Zahl herausnehmen:
pop()
die Liste shuffeln, und dann die ersten 5 Zahlen auswählen.
Werden Sie selbst kreativ: Versuchen Sie, für die 5-er Liste auf Basis Methoden aus dem Paket random möglichst viele weitere Lösungen zu finden!
Dict von Listen erzeugen¶
Erzeugen Sie ein Dict,
dessen keys Zahlen zwischen
1
und61
mit Schrittweite15
sind,und die zugehörige Werte leere Listen sind
Gehen Sie das dict in einer Schleife durch: füllen Sie in einer inneren Schleife für jeden Key die leere Liste an:
als Liste mit 5 zufälligen Zahlen “mit zurücklegen”
als Liste mit 5 zufälligen Zahlen “ohne zurücklegen”:
solange die Liste noch keine 5 Elemente enthält:
neue Zufallszahl erzeugen
falls nicht schon ‘drinn in der Liste: hinzufügen
eleganter, mit Hilfe einer der Lösungen von oben: eine Liste mit 5 zufälligen Zahlen “ohne zurücklegen”
Bingo?!