Tower of Hanoi Help!


#1

My code gets hung up on Line 50 with an invalid syntax error. I’m trying to compare the values of the to and from disks using the Stack method peek(). Can someone tell me what I’m doing wrong? It’s specifically this line of code:
elif (to_stack.get_size() == 0) or (to_stack.peek() > from_stack.peek()):

***Full code

from stack import Stack

print("\nLet's play Towers of Hanoi!!")

#Create the Stacks
stacks = []
left_stack = Stack("Left")
middle_stack = Stack("Middle")
right_stack = Stack("Right")
stacks.append(left_stack)
stacks.append(middle_stack)
stacks.append(right_stack)

#Set up the  Game
num_disks = int(input("\nHow many disks do you want to play with?\n"))
while num_disks < 3:
  num_disks = int(input("\nEnter a number greater than or equal to 3\n"))
for i in range(num_disks, 0, -1):
  left_stack.push(i)
num_optimal_moves = (2**num_disks)-1
print("\nThe fastest you can solve this game is in {0} moves".format(num_optimal_moves))

#Get User Input
def get_input():
  choices = [(stack.get_name()[0]).upper() for stack in stacks]
  while True:
    for i in range(0, len(stacks)):
      name = stacks[i].get_name()
      letter = choices[i]
      print("Enter {0} for {1}".format(letter, name))
    user_input = input(" ")
    if user_input in choices:
      for i in range(0, len(stacks)):
        if user_input == choices[i]:
          return stacks[i]
        
#Play the Game
num_user_moves = 0
while right_stack.get_size() != num_disks:
  print("\n\n\n...Current Stacks....")
  for stack in stacks:
    stack.print_items()
  while True:
    print("\nWhich stack do you want to move from?\n")
    from_stack = get_input()
    if from_stack.size() == 0:
      print("\n\nEmpty Stack. Try Again")
    print("\nWhich stack do you want to move to?\n")
    to_stack = get_input()
    elif (to_stack.get_size() == 0) or (to_stack.peek() > from_stack.peek()):
      disk = from_stack.pop()
      to_stack.push(disk)
      num_user_moves += 1
    else:
      print("\n\nInvalid Move. Try Again")
  break    

print("\n\nYou completed the game in {0} moves, and the optimal number of moves is {1}".format(num_user_moves, num_optimal_moves))

#2

3 posts were merged into an existing topic: Towers of Hanoi - TypeError


#3