2016-05-23 12 views
2

Ich bin verpflichtet, eine Klasse für Node und Binary Tree schreiben, die beide perfekt funktionieren. Ich bin auch verpflichtet, ein Menü für die Methoden zu verwenden, wenn ich versuche, etwas hinzuzufügen, fügt es hinzu, wird aber sofort auf None zurückgesetzt und beginnt erneut, wenn Add aufgerufen wird. Dies ist die Menüimplementierung.Fehler in der Binary Tree-Implementierung in Python

if __name__ == '__main__': 

    print("Menu \n" 
     "\n" 
     "1. Add item \n" 
     "2. Get item \n" 
     "3. Print Binary Tree in Inorder Transversal \n" 
     "4. Exit \n") 

    user_input = input("Please select an action from the menu: ") 
    tree = BinaryTree() 

    if user_input == "1": 
     item = str(input("Please enter an item to add to the Binary Tree: ")) 
     bin_str = str(input("Please enter binary string to place in the Binary Tree: ")) 
     tree.add(item, bin_str) 
     tree.print_inorder() 

    elif user_input == "2": 
     get_item = input("Please enter binary string of wanted item: ") 
     get_bin_str = tree.get(get_item) 
     print(get_bin_str) 

    elif user_input == "3": 
     tree.print_inorder()) 

    elif user_input == "4": 
     sys.exit(0) 

    else: 
     print("Error: please select an action from the menu") 
+0

Was meinst du 'es wird auf None zurückgesetzt und beginnt von vorne'? – polku

+2

Der Code, den Sie angezeigt haben, wird unabhängig von der von Ihnen eingegebenen Eingabe nur einmal ausgeführt, da keine Schleife vorhanden ist. Angenommen, Sie legen die Schleife fest, stellen Sie sicher, dass Sie den Befehl 'tree = BinaryTree()' außerhalb des Menüs bewegen, da Sie ihn nicht jedes Mal neu initialisieren möchten. Sonst wird es seinen Zustand verlieren. – algrebe

Antwort

1

Als oben Kommentar schon sagt, müssen Sie eine while-Schleife für zusätzliche Benutzereingabe ermöglichen, ohne dass das tree Variable jedes Mal zurückgesetzt wird.

if __name__ == '__main__': 

    tree = BinaryTree() 
    while True: 

     print("Menu \n" 
      "\n" 
      "1. Add item \n" 
      "2. Get item \n" 
      "3. Print Binary Tree in Inorder Transversal \n" 
      "4. Exit \n") 

     user_input = input("Please select an action from the menu: ") 

     if user_input == "1": 
      item = str(input("Please enter an item to add to the Binary Tree: ")) 
      bin_str = str(input("Please enter binary string to place in the Binary Tree: ")) 
      tree.add(item, bin_str) 
      tree.print_inorder() 

     elif user_input == "2": 
      get_item = input("Please enter binary string of wanted item: ") 
      get_bin_str = tree.get(get_item) 
      print(get_bin_str) 

     elif user_input == "3": 
      tree.print_inorder()) 

     elif user_input == "4": 
      sys.exit(0) 

     else: 
      print("Error: please select an action from the menu")