Welche der ausdrücke ist falsch bzw. unzulässig??

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
Jimm
User
Beiträge: 5
Registriert: Montag 30. Januar 2006, 12:35
Kontaktdaten:

Montag 30. Januar 2006, 12:41

Hallo,
bin ein neuling in python und brauche für die lösung eines problems eure hilfe. Welche der folgenden Ausdrücke sind syntaktisch zulässig für den Abstrakten Datentyp Stack? Welchen Wert haben die korrekten Ausdrücke?
meinem python buch nach sind die ausdrücke zumindest korrekt konstruiert, allerdings hilft mir das nicht so sehr viel weiter.
ich hoffe in dieser hinsicht mal auf eure hilfe.

TIA

jimm

ÜBERSICHT DER AUSDRÜCKE:

• top(pop(push(e,push(e,create()))))
• top(push(e,isempty(create())))
• isempty(push(h,pop(push(g,push(f,push(e,create()))))))
• isempty(top(e,push(e,create())))
• top(pop(push(e,top(create()))))
• isempty(top(h,pop(push(e,push(e,create())))))
Zuletzt geändert von Jimm am Montag 30. Januar 2006, 13:46, insgesamt 2-mal geändert.
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Montag 30. Januar 2006, 13:19

Humm??

Wenn alle Ausdrücke korrekt geklammert sind, dann sind sie alle korrekte Ausdrücke (könnten also mit eval() ausgewertet werden). Nur hängt die Auswertung natürlich vom Kontext ab, sprich in einem Standardkontext würdest Du bei allen einen NameError bekommen weil die Namen nicht definiert sind.

Aber: wahrscheinlich versteh ich Deine Frage nicht, sie ist viel zu undeutlich gestellt...

Und ganz davon abgesehen: hier in diesem Forum auch völlig falsch. Probiers das nächste mal unter "Allgemeines."

--- Heiko.
Jimm
User
Beiträge: 5
Registriert: Montag 30. Januar 2006, 12:35
Kontaktdaten:

Montag 30. Januar 2006, 14:27

@ heiko:

es ist die vrs. für eine aufgabe, die ich lösen muss. die klammersetzung habe ich überprüft genauso, wie "struktur". ich komme nur nicht dahinter was falsch ist. habe auch schon im aspn cookbook nachgeschlagen, aber ich finde keinen anhaltspunkt.
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Montag 30. Januar 2006, 14:37

Hmm... Es kommt ein bißchen drauf an was pop und push machen, ob das ganze läuft oder nicht. Der Datentyp Stack ist im Prinzip in Python durch eine Liste zu repräsentieren, und Du kannst das ganze so implementieren dass push und pop jeweils ein Element der Liste entfernen oder hinzufügen, und als Ausdruckswert die Liste selbst haben, top sollte für meinen Geschmack als Wert das Letzte Element des Stacks haben, und isempty prüft ob die Liste (also der Stack leer ist oder nicht).

Du solltest also mit folgendem Code die Dinge ausführen können:

Code: Alles auswählen

def create():
    return []

def push(v,l):
    if not isinstance(l,list):
        raise TypeError, "Probiere auf nicht-stack zu pushen"
    l.append(v)
    return l

def pop(l):
    if not isinstance(l,list):
        raise TypeError, "Probiere von nicht-stack zu poppen"
    l.pop()
    return l

def top(l):
    if not isinstance(l,list):
        raise TypeError, "Probiere oberstes Element von nicht-stack zu finden"
    return l[-1]

def isempty(l):
    if not isinstance(l,list):
        raise TypeError, "Probiere nicht-stack auf Inhalt zu prüfen"
    return l == []

e, f, g, h = None, None, None, None
Wenn ein TypeError kommt ist der Ausdruck fehlerhaft, wenn nicht, dann ist er okay. Den ganzen rest überlass ich Dir; vor allen Dingen zu verstehen warum ich die Methoden so wie oben implementiert habe. ;-)

--- Heiko.
XT@ngel
User
Beiträge: 256
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Montag 30. Januar 2006, 14:55

Falsches Forum :wink:
MfG
Andreas
Jimm
User
Beiträge: 5
Registriert: Montag 30. Januar 2006, 12:35
Kontaktdaten:

Montag 30. Januar 2006, 15:01

@ heiko.

vielen dank für die hilfe. ich habe jetzt eine idee woran es liegt. bzw. wie ich weiter mache. es war nicht wie ich gedacht habe irgendwelche dreher oder fehlende parameter in den zeilen, sondern gewissermaßen die logik bzw. die ausführung auf den stack. werde mich gleich mal ranmachen und weiter schrauben. danke für die schnelle hilfe.

jimm
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Montag 30. Januar 2006, 15:04

Jupp. Wenn Du meine Methoden anwendest sind nur zwei der Ausdrücke (wenn ich das richtig gesehen habe) definiert, also auswertbar.

--- Heiko.
Antworten