Programm was soll ich heute lernen
Einen schönen guten Tag!
Ich habe gestern mit der Programmiersprache Python begonnen und hätte da eine Frage zu import random
Ich habe so begonnen:
import random
liste Thema = (".....")
liste1 Lernart = ("....")
Am Schluss eine Printausgabe was ich heute lernen soll mit Thema und Lernart
Frage= Wie definiere ich, dass das Lernthema Potenzrechnung, Bruchrechnen u.s.w kein Lernspiel hat oder keine Maturabeispiele.
Vielen Dank!
Andrea
Ich habe gestern mit der Programmiersprache Python begonnen und hätte da eine Frage zu import random
Ich habe so begonnen:
import random
liste Thema = (".....")
liste1 Lernart = ("....")
Am Schluss eine Printausgabe was ich heute lernen soll mit Thema und Lernart
Frage= Wie definiere ich, dass das Lernthema Potenzrechnung, Bruchrechnen u.s.w kein Lernspiel hat oder keine Maturabeispiele.
Vielen Dank!
Andrea
Bitte zeig uns den richtigen Code, mit den Code-Tags. Im vollstaendigen Editor hier der Knopf </>. Denn sonst gehen die in Python wichtigen Einrueckungen verloren. Und das was da oben steht ist ja kein gueltiges Python.
Und leider verstehe ich nicht, was genau du da versuchst. Kannst du das nochmal umfangreicher beschreiben?
Und leider verstehe ich nicht, was genau du da versuchst. Kannst du das nochmal umfangreicher beschreiben?
Code: Alles auswählen
from random import shuffle
Maturathemen = "wurzelfunktion lineare-funktion quadratische-funktion wachstum-zerfall prozentrechnen \
wachstum-zerfall zahlenbereiche venn-diagramme ".upper().split()
shuffle (Maturathemen)
Lernweise = "lernkarteien-erstellen lernen overviewseiten-erstellen maturaaufgaben lernspiele".upper().split()
shuffle (Lernweise)
#Für die Lernspiele nur die Themen = "lineare-funktion quadratische-funktion Prozentrechnen auswählen"
#Für die Maturaaufgaben nur die Themen ="lineare-funktion quadratische-funktion wachstum-zerfall zahlenbereiche venn-diagramme auswählen".upper().split()
print ("Was soll ich heute lernen?")
print ("Maturathemen: " + (Maturathemen[0] ))
print ("Lernart: " + (Lernweise[1] ))
Hinter Funktionen (shuffle, print) und der öffnen Klammer kommt kein Lerzeichen.
Variablen sollten klein geschrieben werden.
Was du brauchst ist eine Verknüpfung zwischen dem dem Maturathemen und den Lernweisen. Du musst also irgendwie festlegen für welche Maturathemen welche Lernweisen verfügbar sind.
Eine Möglichkeit wäre, eine geeignete Datenstruktur zu verwenden, statt zwei unabhängiger Listen. Zum Beispiel eine verschachtelte Liste oder ein dictionary, wobei der Schlüssel das Maturathema und der Wert eine Liste von Lernweisen ist. Du würdest dann zuerst das Maturathema "würfeln", die anschließend die dafür verfügbaren Lernweisen nehmen und daraus dann wieder eine zufällige Auswahl treffen.
Im Sinne der Normalisierung wäre natürlich noch ein Zwischenschritt zur Entkoppelung möglich, aber ich denke, das wäre in diesem Fall übertrieben, wäre aber die Kür statt die Pflicht.
Noch besser als die Liste durchzuschütteln und dann ein Element (übrigens einmal das 1. aus einer Liste und dann das 2. aus der anderen?) draus zu nehmen, finde ich persönlich ja random.choice(). Damit kann man sich aus einer Liste ein zufälliges Element zurückgeben lassen.
Wenn du die Werte eh alle in den Quellcode schreibst, solltest du sie nicht in eine Zeichenkette schreiben und dann in Großbuchstaben umwandeln und bei den Leerzeichen trennen. Das wird dir spätestens auf die Füße fallen, wenn mal etwas mit einem Leerzeichen im Namen vor kommt. Was du ja im Moment durch unnötige Bindestriche zu verhindern suchst. Nimm lieber die Notation für Listen, die braucht auch nicht mehr Brot:
Bzw. nimm _nicht_ die Notation für Listen, weil das wahrscheinlich die falsche Datenstruktur ist.
Übrigens würde dir ein dictionary auch gleich abnehmen, dass zumindest die Themen doppelt vorkommen - was sie in deinem Beispielcode tun.
Variablen sollten klein geschrieben werden.
Was du brauchst ist eine Verknüpfung zwischen dem dem Maturathemen und den Lernweisen. Du musst also irgendwie festlegen für welche Maturathemen welche Lernweisen verfügbar sind.
Eine Möglichkeit wäre, eine geeignete Datenstruktur zu verwenden, statt zwei unabhängiger Listen. Zum Beispiel eine verschachtelte Liste oder ein dictionary, wobei der Schlüssel das Maturathema und der Wert eine Liste von Lernweisen ist. Du würdest dann zuerst das Maturathema "würfeln", die anschließend die dafür verfügbaren Lernweisen nehmen und daraus dann wieder eine zufällige Auswahl treffen.
Im Sinne der Normalisierung wäre natürlich noch ein Zwischenschritt zur Entkoppelung möglich, aber ich denke, das wäre in diesem Fall übertrieben, wäre aber die Kür statt die Pflicht.
Noch besser als die Liste durchzuschütteln und dann ein Element (übrigens einmal das 1. aus einer Liste und dann das 2. aus der anderen?) draus zu nehmen, finde ich persönlich ja random.choice(). Damit kann man sich aus einer Liste ein zufälliges Element zurückgeben lassen.
Wenn du die Werte eh alle in den Quellcode schreibst, solltest du sie nicht in eine Zeichenkette schreiben und dann in Großbuchstaben umwandeln und bei den Leerzeichen trennen. Das wird dir spätestens auf die Füße fallen, wenn mal etwas mit einem Leerzeichen im Namen vor kommt. Was du ja im Moment durch unnötige Bindestriche zu verhindern suchst. Nimm lieber die Notation für Listen, die braucht auch nicht mehr Brot:
Code: Alles auswählen
maturathemen = ["wurzelfunktion", "lineare funktion", "quadratische funktion", "wachstum zerfall", "prozentrechnen", "zahlenbereiche", "venn-diagramme"]
Übrigens würde dir ein dictionary auch gleich abnehmen, dass zumindest die Themen doppelt vorkommen - was sie in deinem Beispielcode tun.
Würde dir auch ein Dictionary empfehlen, das könnte dann so aussehen:
Dann musst du eigentlich nur noch ein zufälliges Element aus den Schlüsseln des Dictionary ausgeben. Eine Liste der Schlüssel erhälst du mit
Daraus musst du dann mit random.choice() ein Thema auswählen und in einer Variable speichern, danach kannst du mit dem Schlüssel auf die Werte dahinter zugreifen.
So greift man auf die Werte in einem Dictionary zu, wenn man den Schlüssel kennt:
Das liefert eine Liste mit allen Lernweisen zu dem Thema, da musst du dann mit random.choice() auch noch einmal ein Thema ausgeben lassen.
Dann musst du eigentlich nur noch das Thema und die Lernweise printen.
Code: Alles auswählen
maturathemen_mit_lernweise = {"Wurzelfunktion":["Lernkarteien erstellen", "lernen", "Overviewseiten erstellen", "Maturaaufgaben", "Lernspiele"],
"lineare Funktion":["Lernkarteien erstellen", "lernen","Maturaaufgaben"],
"quadratische Funktion":["lernen", "Overviewseiten erstellen", "Lernspiele"],
"Wachstum Zerfall":["Overviewseiten erstellen", "Maturaaufgaben", "Lernspiele"],
"Prozentrechnen":["lernen", "Lernspiele", "Overviewseiten erstellen"],
"Zahlenbereiche":["Lernkarteien erstellen", "Overviewseiten erstellen", "Lernspiele"],
"Venn-Diagramme":["Overviewseiten erstellen", "Maturaaufgaben", "Lernspiele"]}
Dann musst du eigentlich nur noch ein zufälliges Element aus den Schlüsseln des Dictionary ausgeben. Eine Liste der Schlüssel erhälst du mit
Code: Alles auswählen
list(maturathemen_mit_lernweise.keys())
So greift man auf die Werte in einem Dictionary zu, wenn man den Schlüssel kennt:
Code: Alles auswählen
maturathemen_mit_lernweise[thema]
Dann musst du eigentlich nur noch das Thema und die Lernweise printen.
Code: Alles auswählen
import random
maturathemen_mit_lernweise = {"Wurzelfunktion":["Lernkarteien erstellen", "lernen", "Overviewseiten erstellen", "Maturaaufgaben"],
"lineare Funktion":["Lernkarteien erstellen", "Overviewseiten erstellen", "lernen","Maturaaufgaben"],
"quadratische Funktion":["lernen", "Maturaaufgaben", "Overviewseiten erstellen", "Lernspiele", "Lernkarteien erstellen"],
"Wachstum Zerfall":["Overviewseiten erstellen", "Maturaaufgaben", "lernen", "Lernkarteien erstellen"],
"Prozentrechnen":["lernen", "Lernspiele", "Overviewseiten erstellen", "Lernkarteien erstellen"],
"Zahlenbereiche":["Lernkarteien erstellen", "lernen", "Overviewseiten erstellen"],
"Venn-Diagramme":["Overviewseiten erstellen", "Maturaaufgaben", "lernen", "Lernkarteien erstellen"]}
sample= random.choice(list(maturathemen_mit_lernweise))
print ("Was soll ich heute lernen?")
print('Maturathemen mit Lernart:', sample, " - ", maturathemen_mit_lernweise[sample])
- __blackjack__
- User
- Beiträge: 14051
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
``maturathemen_mit_lernweise[sample]`` ist eine Liste mit Lernweisen. Wie man aus einer Liste einen zufälligen Wert auswählt, hast kannst Du doch bereits.
`sample` ist übrigens kein guter Name. Das ist ein `thema` oder `maturathema`.
`sample` ist übrigens kein guter Name. Das ist ein `thema` oder `maturathema`.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Guten Morgen!
Das Problem ist die Ausgabe:
Maturathemen mit Lernart: lineare Funktion - ['Lernkarteien erstellen', 'Overviewseiten erstellen', 'lernen', 'Maturaaufgaben']
Ich will nur einen Eintrag und das dieser Bereich auch durchgemischt wird.
Das Problem ist die Ausgabe:
Maturathemen mit Lernart: lineare Funktion - ['Lernkarteien erstellen', 'Overviewseiten erstellen', 'lernen', 'Maturaaufgaben']
Ich will nur einen Eintrag und das dieser Bereich auch durchgemischt wird.
es fehlt noch ein random.choice für maturathemen_mit_lernweise[sample], also
Code: Alles auswählen
random.choice(maturathemen_mit_lernweise[sample])
Ergänzung: Wenn du ein Dictionary hast und den Key kennst, dann kannst du daraus die Value ermitteln. In dem Fall ist Value eine Liste, also ['Lernkarteien erstellen', 'Overviewseiten erstellen', 'lernen', 'Maturaaufgaben'].
Also liefert dir der Aufruf mein_dict[key] die Value (in dem Fall eine Liste) zurück.
random.choice ist eine Funktion, welche eine Liste als Parameter erwartet und aus dieser dann ein Element zurückgibt.
Also liefert dir der Aufruf mein_dict[key] die Value (in dem Fall eine Liste) zurück.
random.choice ist eine Funktion, welche eine Liste als Parameter erwartet und aus dieser dann ein Element zurückgibt.
Code: Alles auswählen
dict = {key:value}
Ja leider, egal was ich mit random.choice versuche funktioniert leider nicht.
Es ist nicht möglich einen einzelnen Value von mein Dict auszugeben.
Soll ich meine Listeneinträge verändern?
Vielleicht habt ihr noch einen Tipp?
Es ist nicht möglich einen einzelnen Value von mein Dict auszugeben.
Code: Alles auswählen
import random
maturathemen_mit_lernweise = {"Wurzelfunktion":["Lernkarteien erstellen", "lernen", "Overviewseiten erstellen", "Maturaaufgaben"],
"lineare Funktion":["Lernkarteien erstellen", "Overviewseiten erstellen", "lernen","Maturaaufgaben"],
"quadratische Funktion":["lernen", "Maturaaufgaben", "Overviewseiten erstellen", "Lernspiele", "Lernkarteien erstellen"],
"Wachstum Zerfall":["Overviewseiten erstellen", "Maturaaufgaben", "lernen", "Lernkarteien erstellen"],
"Prozentrechnen":["lernen", "Lernspiele", "Overviewseiten erstellen", "Lernkarteien erstellen"],
"Zahlenbereiche":["Lernkarteien erstellen", "lernen", "Overviewseiten erstellen"],
"Venn-Diagramme":["Overviewseiten erstellen", "Maturaaufgaben", "lernen", "Lernkarteien erstellen"]}
Vielleicht habt ihr noch einen Tipp?
- __blackjack__
- User
- Beiträge: 14051
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@ostigirl: Was Du machen musst wurde jetzt mehrfach in Worten gesagt und einmal sogar exakt mit Code gezeigt den Du einfach nur in Dein Programm übernehmen müsstest. Was genau verstehst Du denn daran nicht?
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Code: Alles auswählen
import random
maturathemen_mit_lernweise = {"Wurzelfunktion":["Lernkarteien erstellen", "lernen", "Overviewseiten erstellen", "Maturaaufgaben"],
"lineare Funktion":["Lernkarteien erstellen", "Overviewseiten erstellen", "lernen","Maturaaufgaben"],
"quadratische Funktion":["lernen", "Maturaaufgaben", "Overviewseiten erstellen", "Lernspiele", "Lernkarteien erstellen"],
"Wachstum Zerfall":["Overviewseiten erstellen", "Maturaaufgaben", "lernen", "Lernkarteien erstellen"],
"Prozentrechnen":["lernen", "Lernspiele", "Overviewseiten erstellen", "Lernkarteien erstellen"],
"Zahlenbereiche":["Lernkarteien erstellen", "lernen", "Overviewseiten erstellen"],
"Venn-Diagramme":["Overviewseiten erstellen", "Maturaaufgaben", "lernen", "Lernkarteien erstellen"]}
maturathema= random.choice(list(maturathemen_mit_lernweise))
random.choice(maturathemen_mit_lernweise[sample])
print ("Was soll ich heute lernen?")
print('Maturathemen mit Lernart:', maturathema, " - ", maturathemen_mit_lernweise[sample])
Ich stehe irgendwie auf der Leitung

random.choice(maturathemen_mit_lernweise[sample])
Mit dieser Zeile habe ich meine Problem!
[sample] ist das eine Variable oder teil der random syntax
Wie kann ich den mehrere Keys zusammenhängen in einer Zeile?
Das funktioniert leider nicht.
Code: Alles auswählen
lernart= random.choice(maturathemen_mit_lernweise["Wurzelfunktion", "Prozentrechnen"])
- __blackjack__
- User
- Beiträge: 14051
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@ostigirl: Das geht gar nicht. Du kannst zwar Tupel als Schlüssel verwenden, aber dann muss auch dieses Tupel als Schlüssel im Wörterbuch stehen. Was sollte das was Du da geschrieben hast denn Ergebnis liefern und warum?
Es gibt übrigens keine random Syntax. `random` ist ein Modul und `choice()` ist eine Funktion. Die Syntax ist wie bei jedem anderen Modul und jeder anderen Funktion auch. Bei einem Funktionsaufruf wird erst der Wert vor den Aufrufklammern ausgewertet, also `random.choice`, dann die Argumente, also `maturathemen_mit_lernweise[sample]`, und mit dem Ergebnis wird dann das aufgerufen was `random.choice` ergeben hat. Also würde wenn es nicht beim Auswerten des Arguments einen `NameError` geben würde. Denn bei `maturathemen_mit_lernweise[sample]` wird erst der Ausdruck ausgewertet auf den der Schlüsselzugriff gemacht werden soll (`maturathemen_mit_lernweise` → ein Wörterbuch) und dann der Schlüssel — nur das `sample` nicht definiert wurde.
Es gibt übrigens keine random Syntax. `random` ist ein Modul und `choice()` ist eine Funktion. Die Syntax ist wie bei jedem anderen Modul und jeder anderen Funktion auch. Bei einem Funktionsaufruf wird erst der Wert vor den Aufrufklammern ausgewertet, also `random.choice`, dann die Argumente, also `maturathemen_mit_lernweise[sample]`, und mit dem Ergebnis wird dann das aufgerufen was `random.choice` ergeben hat. Also würde wenn es nicht beim Auswerten des Arguments einen `NameError` geben würde. Denn bei `maturathemen_mit_lernweise[sample]` wird erst der Ausdruck ausgewertet auf den der Schlüsselzugriff gemacht werden soll (`maturathemen_mit_lernweise` → ein Wörterbuch) und dann der Schlüssel — nur das `sample` nicht definiert wurde.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Vielleicht hilft dir ja der fertige Code zu verstehen:
Code: Alles auswählen
import random
maturathemen_mit_lernweise = {"Wurzelfunktion":["Lernkarteien erstellen", "lernen", "Overviewseiten erstellen", "Maturaaufgaben", "Lernspiele"],
"lineare Funktion":["Lernkarteien erstellen", "lernen","Maturaaufgaben"],
"quadratische Funktion":["lernen", "Overviewseiten erstellen", "Lernspiele"],
"Wachstum Zerfall":["Overviewseiten erstellen", "Maturaaufgaben", "Lernspiele"],
"Prozentrechnen":["lernen", "Lernspiele", "Overviewseiten erstellen"],
"Zahlenbereiche":["Lernkarteien erstellen", "Overviewseiten erstellen", "Lernspiele"],
"Venn-Diagramme":["Overviewseiten erstellen", "Maturaaufgaben", "Lernspiele"]}
thema = random.choice(list(maturathemen_mit_lernweise.keys()))
lernweise = random.choice(maturathemen_mit_lernweise[thema])
print(f"Das Thema ist '{thema}' und die Lernweise ist '{lernweise}'")