Замените ваш код следующим:
def mainMenu():
mainMenuItems = np.array(["Load data", "Filter data", "Display statistics",
"Generate plots", "Quit"])
subMenuItems = np.array(["S. enterica", "B. cereus", "Listeria",
"B. thermosphacta"])
while True:
choice = displayMenu(mainMenuItems)
if choice == 1:
filename = input("Please enter filename: ")
data = dataLoad(filename)
elif choice == 2:
while True:
subchoice = displayMenu(subMenuItems)
if subchoice in (1, 2, 3, 4):
data = data[data[:,2] == subchoice]
break
# The answer is not a correct one
continue
elif choice == 3: # instead of if
statistic = input("Please enter statistic: ")
print (dataStatistics(data, statistic))
elif choice == 4:
dataPlot(data)
elif choice == 5:
break
Вам не нужна опция «Выход» в подменю - вы хотите повторить вложенный цикл (подменю) только в случае неправильного ответа (кроме 1, 2, 3 или 4).
Никаких действий не требуется для сохранения содержимого переменной data
, поскольку все выполняемые вами действия находятся внутри вашей функции mainMenu()
. Но если вам это нужно вне вашей функции, используйте оператор return data
в качестве самого последнего в вашей функции вне цикла.