Seite 1 von 1

Drei kleinere oder auch größere "Probleme"

Verfasst: Mittwoch 23. Januar 2008, 16:22
von VitroN
Hallo erstmal,
hab da zwei Probleme, wo ich so ziemlich an die Grenzen meiner Kenntnisse stosse :P

Problem 1
ich habe folgende Liste, die beim einlesen einer Klassenliste entsteht:

Code: Alles auswählen

liste=['Max Meier, achte Klasse: Deutsch, neunte Klasse: Info', 'Andrea Klaus, achte Klasse: Mathe, neunte Klasse: Geschi']


Wie kann ich das Programm jetzt überprüfen lassen, ob Max Meier schon mal in Latein geschrieben hat (die Klasse ist unwichtig)?



Problem 2
Also, ich will, dass der Benutzer auf der Tkinter-Oberfläche mit Hilfe einer RadioGroup und Button eine Datei importieren kann. Der Name der jeweiligen Datei hab ich unter value in jedem RadioButton gespeichert.

Code: Alles auswählen

from Tkinter import * 

class Programm:

klasse = StringVar()  

    def __init__(self): 
        hauptfenster = Tk(className = ' Programm zur Referatefächerverteilung') 

        self.R8a = Radiobutton(hauptfenster, text='Klasse 8a', value='Klasse 8a.txt', variable=klasse) 
        self.R8b = Radiobutton(hauptfenster, text='Klasse 8b', value='Klasse 8b.txt', variable=klasse) 
        self.BEinlesen = Button(hauptfenster, width=15, text='Einlesen', command=self.einlesen) 

    def einlesen(self): 
        f = file('[color=cyan]was muss hier rein[/color]', 'r')

Programm=Programm()
Was muss ich nun bei f = file('', 'r') reinschreiben, dass genau diese Datei eingelesen wird. Wenn ich einfach die Variable der RadioButtons (klasse) reinschreibe, gibt der nen Fehler aus...was auch logisch ist....

Verfasst: Mittwoch 23. Januar 2008, 17:06
von gerold
Hallo VitroN!

Eine Möglichkeit:

Code: Alles auswählen

quellliste = [
    'Max Meier, achte Klasse: Deutsch, neunte Klasse: Info', 
    'Andrea Klaus, achte Klasse: Mathe, neunte Klasse: Geschi'
]
faecher = ("Deutsch", "Info", "Mathe", "Geschi")

# Als Liste
zielliste = []
for item in quellliste:
    name, infos = item.split(",", 1)
    fachliste = []
    for fach in faecher:
        if fach in infos:
            fachliste.append(fach)
    zielliste.append([name, fachliste])

print zielliste
# [['Max Meier', ['Deutsch', 'Info']], ['Andrea Klaus', ['Mathe', 'Geschi']]]


# Als Dictionary
zieldict = {}
for item in quellliste:
    name, infos = item.split(",", 1)
    fachliste = []
    for fach in faecher:
        if fach in infos:
            fachliste.append(fach)
    zieldict[name] = fachliste

print zieldict
# {'Max Meier': ['Deutsch', 'Info'], 'Andrea Klaus': ['Mathe', 'Geschi']}

# Und will man nun wissen, ob "Max Meier" bereits Info hatte, dann koennte man
# so fragen:

print "Hatte Info:", "Info" in zieldict["Max Meier"] and "Ja" or "Nein"
# Hatte Info: Ja

# Oder einfacher:
if "Info" in zieldict["Max Meier"]:
    hatte_info = "Ja"
else:
    hatte_info = "Nein"
print "Hatte Info:", hatte_info
# Hatte Info: Ja
mfg
Gerold
:-)

Verfasst: Mittwoch 23. Januar 2008, 17:33
von BlackJack
Problem 1: Das ist eine ungünstige Datenstruktur. Da solltest Du Dir etwas besseres überlegen. Python ist nicht Tcl wo man alles über Zeichenketten löst.

Problem 2: Die Frage hast Du hier an anderer Stelle schon einmal gestellt. Die Antworten von dort gelten natürlich auch hier.