Drei kleinere oder auch größere "Probleme"

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
VitroN
User
Beiträge: 16
Registriert: Samstag 12. Januar 2008, 09:58

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....
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
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.
Antworten