У меня есть функция, menu(), которая создает меню для навигации и вызова функций. вот функция.Переменная Python, передающая функции в меню
def menu():
x = raw_input("WOOF! What can POODLE fetch for you? ('--nothing' to exit): ")
if x == "--nothing":
sys.exit(0)
elif x == "--build":
populateCrawled(toCrawl)
graph = buildGraph(crawled)
index = buildIndex(graph)
ranks = computeRanks(graph)
menu()
elif x == "--dump":
saveFile(index, "index.txt")
saveFile(graph, "graph.txt")
saveFile(ranks, "ranks.txt")
menu()
elif x == "--restore":
index = loadFile("index.txt")
graph = loadFile("graph.txt")
ranks = loadFile("ranks.txt")
menu()
elif x == "--print":
print graph
print index
print ranks
menu()
elif x == "--help":
print "WOOF! POODLE Help Options"
print "--build Create the POODLE database"
print "--dump Save the POODLE database"
print "--restore Retrieve the POODLE database"
print "--print Show the POODLE database"
print "--help Show this help information"
menu()
elif x == "--search":
search(index, rankablePages)
else:
print "Help option not found"
menu()
seed = raw_input("Please enter the seed URL: ")
testSeed = "https://dunluce.infc.ulst.ac.uk/d11ga2/COM506/AssignmentB/test_index.html"
seed = testSeed
toCrawl=[seed]
crawled, graph, index, rankablePages = [], {}, {}, {}
MAX_DEPTH = 10
menu()
эти переменные и словари объявлены глобально, но когда я говорю типа «--build» он успешно строить, но потом, если я иду к типу «--print» он показывает мне UnboundLocalError: локальная переменная ' граф ", на который ссылаются до присвоения
Однако, если я напечатаю эти словари сразу после строительства, они печатаются хорошо. Когда перезагружается меню(), оно теряет эти значения. Должен ли я использовать цикл while или мне нужно выполнить некоторую передачу параметров?
Лучшим способом структурирования меню является сохранение всех опций в качестве ключей в словаре со значениями, являющимися функциями, которые выполняют функции. Затем весь код меню может быть 'if option в параметрах: options [option](); else: напечатать «Invalid input!» ' – whereswalden