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 programmatisch

  • alle 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:

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ügen

  • die 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 in Zahlen nicht vor?

  • Ist 7 in Sprechen enthalten?

  • Sprechen[7] ist undefiniert und wirft einen Fehler: Wie gibt man einen Defaultwert None 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 Primzahl 17 hinzu

  • wie 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 und 61 mit Schrittweite 15

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 und 61 mit Schrittweite 15 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?!