У меня есть скрипт, который я написал на python для тестирования алгоритмов сортировки, которые я реализовал. Основная часть программы просит пользователя выбрать один из алгоритмов сортировки из списка. И затем, хотят ли они отсортировать из файла чисел или выбрать список случайных чисел. Я настроил его (я думаю), чтобы при наборе числа, которого нет в первом списке вариантов, просто выведите «Bad choice» и попробуйте снова получить число.
[Редактировать] После получения совета ответа я изменил пару входов на необработанные. И я изменил структуру программы. Теперь он работает отлично, за исключением того, что все еще печатает «Плохой выбор» даже после успеха.
def fileOrRandom():
return raw_input("Would you like to read from file or random list? (A or B): ")
choices = {1:SelectionSorter,2:ComparisonSorter}
print "Please enter the type of sort you would like to perform."
print "1. Selection Sort\n2. Comparison Sort"
while(True):
try:
choice=input("Your choice: ")
for i in range(2):
if(choice==i+1):
choice2=fileOrRandom()
if(choice2=='A'):
fileName=raw_input("Please Enter The Name of the File to sort: ")
sorter = choices[choice](fileName)
sorter.timedSort(sorter.sort)
elif(choice2=='B'):
num = input("How many random numbers would you like to sort: ")
sorter = choices[choice](None,num)
sorter.timedSort(sorter.sort)
else:
raise Exception
else:
raise Exception
break
except Exception:
print "Bad Choice"
Моя проблема в том, что он работает, как и ожидалось, для первой части, где он вернет неправильный выбор для числа, которого нет в списке, и получит fileOrRandom (), но он все равно печатает «Bad Choice» при выборе хороших значений Я должен распечатать результаты, потому что sorter.timedSort(sorter.sort)
выполняет мой алгоритм сортировки и выводит на экран кучу других вещей. Я просто упускаю что-то простое или есть лучший способ справиться с этими вложенными опциями в программе на Python?