Seite 1 von 2

Programm was soll ich heute lernen

Verfasst: Montag 18. November 2019, 11:49
von ostigirl
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

Re: Programm was soll ich heute lernen

Verfasst: Montag 18. November 2019, 11:56
von __deets__
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?

Re: Programm was soll ich heute lernen

Verfasst: Montag 18. November 2019, 22:34
von ostigirl

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] ))   

Re: Programm was soll ich heute lernen

Verfasst: Montag 18. November 2019, 22:45
von sparrow
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:

Code: Alles auswählen

maturathemen = ["wurzelfunktion", "lineare funktion", "quadratische funktion",  "wachstum zerfall", "prozentrechnen", "zahlenbereiche", "venn-diagramme"]
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.

Re: Programm was soll ich heute lernen

Verfasst: Dienstag 19. November 2019, 08:12
von Jankie
Würde dir auch ein Dictionary empfehlen, das könnte dann so aussehen:

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())
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:

Code: Alles auswählen

maturathemen_mit_lernweise[thema]
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.

Re: Programm was soll ich heute lernen

Verfasst: Dienstag 19. November 2019, 22:41
von ostigirl

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])
Was muss ich bitte noch festlegen das mir nur eine lernweise angezeigt wird?

Re: Programm was soll ich heute lernen

Verfasst: Dienstag 19. November 2019, 23:36
von __blackjack__
``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`.

Re: Programm was soll ich heute lernen

Verfasst: Mittwoch 20. November 2019, 06:40
von ostigirl
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.

Re: Programm was soll ich heute lernen

Verfasst: Mittwoch 20. November 2019, 07:30
von sparrow
Lies dir noch einmal den Beitrag von __blackjack__ durch, darin hat er deine frage beantwortet.

Re: Programm was soll ich heute lernen

Verfasst: Mittwoch 20. November 2019, 08:08
von Jankie
es fehlt noch ein random.choice für maturathemen_mit_lernweise[sample], also

Code: Alles auswählen

random.choice(maturathemen_mit_lernweise[sample])

Re: Programm was soll ich heute lernen

Verfasst: Mittwoch 20. November 2019, 10:23
von Jankie
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.

Code: Alles auswählen

dict = {key:value}

Re: Programm was soll ich heute lernen

Verfasst: Mittwoch 20. November 2019, 12:30
von ostigirl
Ja leider, egal was ich mit random.choice versuche funktioniert leider nicht.
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"]}
Soll ich meine Listeneinträge verändern?
Vielleicht habt ihr noch einen Tipp?

Re: Programm was soll ich heute lernen

Verfasst: Mittwoch 20. November 2019, 12:52
von __blackjack__
@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?

Re: Programm was soll ich heute lernen

Verfasst: Mittwoch 20. November 2019, 14:37
von ostigirl

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

Re: Programm was soll ich heute lernen

Verfasst: Mittwoch 20. November 2019, 14:47
von Zizibee
<sample> ist dein Key im Dictionary, also z.B. "Wurzelfunktion" oder "Zahlenbereiche"

Re: Programm was soll ich heute lernen

Verfasst: Mittwoch 20. November 2019, 15:11
von ostigirl
Wie kann ich den mehrere Keys zusammenhängen in einer Zeile?

Code: Alles auswählen

lernart= random.choice(maturathemen_mit_lernweise["Wurzelfunktion", "Prozentrechnen"])
Das funktioniert leider nicht.

Re: Programm was soll ich heute lernen

Verfasst: Mittwoch 20. November 2019, 15:29
von Zizibee
Sorry, ich dachte du wolltest nun die Lernart heraus suchen.
Wie du die Maturathemen zufällig wählst, hatte Jankie ja schon erklärt.

Re: Programm was soll ich heute lernen

Verfasst: Mittwoch 20. November 2019, 15:47
von __blackjack__
@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.

Re: Programm was soll ich heute lernen

Verfasst: Mittwoch 20. November 2019, 16:03
von ostigirl
Ja, Danke zu 95 % ist mein Programm fehlerfrei. Denn Rest werde ich dann mit meiner Programmierlehrerin Face to Face klären im Dezember.

Re: Programm was soll ich heute lernen

Verfasst: Donnerstag 21. November 2019, 07:57
von Jankie
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}'")