Home > Back-end >  My menu loop isn't working and I don't know why
My menu loop isn't working and I don't know why

Time:10-23

I'm writing code for a project and am just finishing up the menu, where there are 5 options and the user inputs a number to select said option. Here's my code:

  display_menu(True)
  command = input("Enter a number (0 to exit): ")
  
  while command != 0:
    if command == 1:
      namefile = input("Enter word list filename: ")
      wordlist = make_list(namefile)
      print('Word list is loaded.')
    elif command == 2:
      namefile = input('Enter movie review filename:')
      moviedict = make_dict(namefile)
      print('Movie reviews are loaded.')
    elif command == 3:
      searchword = input('Enter a word to search: ')
      count1, score1 = search_word(searchword)
      print(searchword   ' appears '   count1   ' times')
      print('The average score for the reviews containing the word terrific is: '   score1)
    elif command == 4:
      print_lists(list, list_scores)
    elif command == 5:
      pass
    display_menu(True)
    command = input("Enter a number (0 to exit): ")

it definitely prints the list but when I enter a command input it doesn't actually work. If anyone has any ideas let me know ASAP because it's due tonight lol. Cheers and thanks in advance.

CodePudding user response:

command is a string returned by input, and you're comparing to an int. You need to explicitly convert that string to an int.

command = int(input("Enter a number (0 to exit): "))

CodePudding user response:

As @Chris said you must not compare string and integer.
You may convert the input to an integer or you can test for an alphabetic choice as in:

while command:
  if command == "1"
    ...

and, why not, alphanumeric mnemonics:

while command:
  if command in ("1", "f", "F")
    ...
  elif command in ("2", "m", "M")
    ...
  elif command in ("3", 'w', "W")
    ...
  elif command in ('4', "l", "L")
    ...
  • Related