Ich habe ein Tupel wie dieses.ist kein Objekt in Python veränderbar?
t = (5, (3, (20, none, none), (21, none, none)), (10, (1, none, none), none))
Ich möchte einen Baum daraus bauen. Baumklasse sieht so aus.
class TreeNode(object):
def __init__(self,x=None,l=None,r=None):
self.x = x
self.l = l # left node
self.r = r # right node
Ich baue Baum rekursiv. Ich überprüfe, ob der aktuelle Knoten None
ist, und setze dann den aktuellen Knoten auf eine neue TreeNode
Klasse. Aber das funktioniert nicht wie erwartet.
def build(current_node, tupl):
if tupl:
if current_node is None:
current_node = TreeNode() # I think this removes link to the trees node.
current_node.x = tupl[0]
build(current_node.l, tupl[1])
build(current_node.r,tupl[2])
hier ist, wie ich bauen rufen Funktion
root = TreeNode() # TreeNode is tree class
build(root,t)
# I try to print the tree level by level but tree only has root node
Aber diese Build-Funktion funktioniert gut.
def build(curr,t):
if t:
curr.x = t[0]
try:
if t[1] is not None:
curr.l = TreeNode()
build(curr.l,t[1])
except Exception:
pass
try:
if t[2] is not None:
curr.r = TreeNode()
build(curr.r,t[2])
except Exception:
pass
Ich versuche zu verstehen, warum die erste Build-Funktion fehlschlägt.
Was ist falsch an Ihrem Code - gibt es eine Fehlermeldung oder eine falsche Ausgabe? Bitte schreiben Sie den Traceback oder die erwartete und tatsächliche Ausgabe. Übrigens ist die "ausgenommen Ausnahme" gefährlich und kann Fehler leicht verstecken. https://stackoverflow.com/questions/21553327/why-is-except-pass-a-bad-programming-practice. Mir ist auch nicht klar, wie der Fragekörper mit dem Titel verwandt ist - aber nein, keiner ist veränderbar. – perigon
Danke, ich werde meine Frage bearbeiten und auf mein Problem hinweisen. Ich verwende try catch, um zu überprüfen, ob der Index existiert. Wie kann ich es ohne Versuch fangen? –