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

Drei kleinere oder auch größere "Probleme"

Beitragvon VitroN » Mittwoch 23. Januar 2008, 16:22

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: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Mittwoch 23. Januar 2008, 17:06

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

Beitragvon BlackJack » Mittwoch 23. Januar 2008, 17:33

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.

Wer ist online?

Mitglieder in diesem Forum: __deets__, Bing [Bot]