Seite 1 von 1

Listen in Bezug zueinander stellen

Verfasst: Mittwoch 24. Juni 2015, 09:48
von Lena
Hallo!

Ich bin noch neu hier und noch habe ein paar Probleme beim Programmieren :/
Ich habe mehrere Listen
Bsp.:

Code: Alles auswählen

# die Liste, als Oberkategorie
Blumen=["Rose","Tulpe", "Sonnenblume","Nelke","Grünplfanzen"]

#dann die einzelnen Listen mit den Farbeigenschaften
Rose=["rot","gelb","blau","rosa","weiß"]
Tulpe=["rot", "gelb","grün", "weiß", "rosa"
Sonnenblume=["gelb", "braun"]
Grünplanzen=["grün"]
Nelke=["weiß", "lila", "gelb", "rot"]
Nun das Problem: Ich möchte gerne, dass die beiden Listen in einem Bezug zueinander stehen, dass ich also die Option habe:

Code: Alles auswählen

erg=str(input("Bitte geben Sie die Blume (aus der Liste 'Blume') ein, bei der Sie Ergänzungen vornehmen möchten"))
Der User soll dann also eine Blumenkategorien nennen und dann in der Liste bei bspw. 'Nelke' eine weitere Farbe, bspw. "rosa" hinzufügen können. Viellciht geht das dan dann ja auch ganz einfach mit append....aber ich weiß halt nicht, wie ic die Listen so miteinander verknüpfen kann. Wichtig ist dabei auch, dass die Listen nicht gleichlang sind.

Ich würde mich über eine/mehrere Antwort/en riesig freuen!
LG

Re: Listen in Bezug zueinander stellen

Verfasst: Mittwoch 24. Juni 2015, 10:01
von Sirius3
Was Du suchst, ist ein Wörterbuch:

Code: Alles auswählen

blumen_farben = {
    "Rose": ["rot","gelb","blau","rosa","weiß"],
    "Tulpe": ["rot", "gelb","grün", "weiß", "rosa"],
    "Sonnenblume": ["gelb", "braun"],
    "Nelke": ["weiß", "lila", "gelb", "rot"],
    "Grünplfanzen": ["grün"],
}
dann kannst Du mit blumen_farben[blumenname] auf die Farbenlisten zugreifen.

Re: Listen in Bezug zueinander stellen

Verfasst: Mittwoch 24. Juni 2015, 10:03
von BlackJack
@Lena: Geh das am besten auch mal auf Rechtschreibfehler durch. ;-)

Re: Listen in Bezug zueinander stellen

Verfasst: Mittwoch 24. Juni 2015, 10:58
von Lena
@ sirius Danke für deine schnelle Antwort!

Aber es funktioniert nicht richtig bei mir, ich weiß nicht wo mein Denkfehler ist:/

ich habe also das Dictionary erstellt, wie du gezeigt hast.. nun habe ich folgenden code

Code: Alles auswählen

erg=str(input("Ergänzungen sind möglich. tipp dafür 'ja'"))
if erg=="ja" or erg=="JA" or erg=="Ja":
    moegl=str(input("Angabe: Welche Blume soll erweitert werden:")) 
        if moegl in Blumen:
            print (Blumen_farben[moegl]) # also hier soll der erstmal anzeigen, zu welchen Inhalten etwas zugefügt wird.
# Weißt du auch wie man dann ein Element hinzufügen kann? Geht das auch mit .append()?

LG :)

Re: Listen in Bezug zueinander stellen

Verfasst: Mittwoch 24. Juni 2015, 11:24
von cofi
Was funktioniert denn nicht? Der gezeigte Code zeigt ja eben alle Farben für die jeweilige Blume - vorrausgesetzt es gibt die Liste `Blumen` noch.

Kleine Verbesserung, damit man `Blumen` nicht mehr braucht (und alle Moeglichkeiten "Ja" zu schreiben):

Code: Alles auswählen

erg = str(input("Ergänzungen sind möglich. tipp dafür 'ja'"))
if erg.lower() =="ja":
    moegl = str(input("Angabe: Welche Blume soll erweitert werden:"))
        if moegl in Blumen_farben:
            print(Blumen_farben[moegl])
Eine Farbe kannst du dann mit `Blumen_farben[moegl].append(neue_farbe)` hinzufuegen.

Re: Listen in Bezug zueinander stellen

Verfasst: Mittwoch 24. Juni 2015, 11:33
von Lena
Also es funktioniert, bis man Eingeben kann, bei welcher Blume man ergänzen möchte. Danach wird aber nichts mehr ausgegebn, also auch

print(Blumen_farben[moegl])

wird gar nicht mehr geprintet. Und man kann eben auch keine Farbe eingeben, die eben zugefügt werden soll...:/

Re: Listen in Bezug zueinander stellen

Verfasst: Mittwoch 24. Juni 2015, 13:42
von Lena
Ich hab den Fehler gefunden! Vielen Dank nochmal! :)

Re: Listen in Bezug zueinander stellen

Verfasst: Mittwoch 24. Juni 2015, 13:44
von Kebap
Vielleicht verrätst du deine Lösung, falls noch jemand Interesse hat, der hier im Thread mitliest? :wink:

Re: Listen in Bezug zueinander stellen

Verfasst: Mittwoch 24. Juni 2015, 15:44
von Lena
Achso^^...

Code: Alles auswählen

blumen_farben = {"Rose": ["rot","gelb","blau","rosa","weiß"],"Tulpe": ["rot", "gelb","grün", "weiß", "rosa"],"Sonnenblume": ["gelb", "braun"],"Nelke": ["weiß", "lila", "gelb", "rot"],"Grünplfanzen": ["grün"]}
erg=str(input("Ergänzungen sind möglich. tipp dafür 'ja'"))
if erg=="ja" or erg=="JA" or erg=="Ja":
    moegl=str(input("Angabe: Welche Blume soll erweitert werden:"))
    if moegl in blumen_farben:
        print (blumen_farben[moegl]) # also hier soll der erstmal anzeigen, zu welchen Inhalten etwas zugefügt wird.
        neue_farbe=str(input("Farbe!?"))
        blumen_farben[moegl].append(neue_farbe)
        print (blumen_farben)
#also das ist der vollständige Code gewesen, teilweise war es glaub ich nur wegen Groß- und Kleinschreibung ^^...

#Vielen Danke für die Hilfe!

Re: Listen in Bezug zueinander stellen

Verfasst: Mittwoch 24. Juni 2015, 15:46
von BlackJack
@Lena: Die `str()`-Aufrufe mit dem Rückgabewert von `input()` sind überflüssig. Was denkst Du denn was die machen sollen?

Re: Listen in Bezug zueinander stellen

Verfasst: Mittwoch 24. Juni 2015, 16:22
von Lena
na dadurch wird doch gekennzeichnet, dass lediglich strings akzeptiert werden!?...also integer oder floats würden ja keinen Sinn machen...?

Re: Listen in Bezug zueinander stellen

Verfasst: Mittwoch 24. Juni 2015, 16:26
von BlackJack
@Lena: Die `input()`-Funktion ”akzeptiert” von Haus aus nur Zeichenketten, das heisst der Benutzer tippt etwas ein und das wird dann von der `input()`-Funktion als Zeichenkette geliefert. Der `str()`-Aufruf hat auf Zeichenketten gar keinen Effekt, kann also hier einfach wegfallen.

Re: Listen in Bezug zueinander stellen

Verfasst: Mittwoch 24. Juni 2015, 16:30
von bwbg
Nein. str(x) "kennzeichnet" nichts. Hierbei handelt es sich um eine Funktion, welches für ein Objekt eine Zeichenkette zurück liefert. Bsp.: str(1) -> "1"

Die input-Funktion liefert als Ergebnis (Rückgabewert) eine Zeichenkette. In Deinem Fall würde versucht aus einer Zeichenkette eine Zeichenkette zur erstellen. Ergo: Überflüssig.

Der Hinweis in einem anderen Thema von Dir, ein vernünftiges Tutorial/Buch durchzuarbeiten gilt auch hier (Stichworte: Funktionen, Parameter, Rückgabewerte)