Extrem lange If-Abfragen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
legende
User
Beiträge: 3
Registriert: Freitag 16. Juli 2021, 11:33

Hallo liebe Community,

ich bin gerade dabei Python zu lernen und schreibe gerade meine ersten Programme.

Dabei bin ich auf ein problem gestossen, wofür ich gerne eure Hilfe in anspruch nehmen würde.

Ich lasse mir über einen Zufallsgenerator für zwei Variablen (A,B) Werte (bis 20) ermitteln, die ich dann weiterverarbeite. Diese Funktion läuft diverse male.

Möchte am ende des Programmes aber wissen, wie oft der Variablen A und B welcher Wert zugeteilt worden sind.

Aktuell habe ich eine IF abfrage nach folgendem Schema auf gebaut.

Wenn A=1, dann addiere die Variable "Zahl 1" +1, wenn Wenn A=2, dann addiere die Variable "Zahl 2" +1; und so weiter.

Anschließend lasse ich mir die Variable Zahl 1, Zahl 2, Zahl 3, und so wieter ausgeben.

Nun habe ich allerdings eine extrem grosse If-Abfrage die es nicht leichter mach den Code zu lesen.

Gibt es hier schlanke möglichkeiten dafür?
__deets__
User
Beiträge: 14538
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte den Code zeigen, und nicht beschreiben. Dabei die Code-Tags nicht vergessen, das ist der </>-Knopf im vollstaendigen Editor.
einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

Vorschlag: Statt A und B jedes mal einen neuen Wert zuzuweisen, nimmst du Listen und hängst den Zufallswert an. Dann kannst du auch zählen wie oft welche Zahl vor kam.

Code: Alles auswählen

import random
from collections import Counter
a = [random.randint(0, 20) for _ in range(20)]
print(Counter(a))
Aber ich vermute fast, dass den Beispiel nur abstrahiert ist und schließe mich __deets__ Vorschlag an.
Benutzeravatar
Max07t
User
Beiträge: 6
Registriert: Montag 21. Juni 2021, 15:23
Wohnort: Frankfurt am Main
Kontaktdaten:

Hallo,
ich habe eben das Programm so geschrieben, wie ich es schreiben würde. Hierbei habe ich bewusst keine Module (außer das random Modul) verwendet, damit alles nachvollziehbar ist. Außerdem habe ich (fast) jede Zeile kommentiert, damit alles nachvollziehbar ist. Solltest du Fragen haben, dann kannst du jederzeit nachfragen.

Code: Alles auswählen

import random # Importiert das Modul 'random'

werte_bei_jedem_durchlauf = [] # Definiert eine leere Liste

for durchlauf in range(20): # Führt sich selbst 20 Mal aus
    variable_a = random.randint(1, 20) # Weist einen zufälligen Wert der Variable zu
    variable_b = random.randint(1, 20) # Weist einen zufälligen Wert der Variable zu

    werte_bei_jedem_durchlauf.append({ # Fügt das folgene dict zu der liste hinzu
        "durchlauf": durchlauf, # Speichert, welcher Durchlauf gerade ist
        "werte": [ # Definiert eine Liste in dem dict
            {
                "variable_a": variable_a, # Speichert den Wert von 'variable_a' für diesen Durchlauf
                "variable_b": variable_b # Speichert den Wert von 'variable_b' für diesen Durchlauf
            }
        ]
    }) # Schließt die Klammer der appen()-Funktion

print(werte_bei_jedem_durchlauf)
~ Liebe Grüße und einen schönen Abend.
Antworten