Я пытаюсь написать меню, в котором вариант 1 добавил бы пару ключ: значение в словарь, а вариант 2 запустил бы модуль потоков, используя элементы из словаря.Ключ - это сообщение от пользовательского ввода, а значение - это количество секунд от пользовательского ввода, которое поток должен приостановить перед отображением сообщения.
Сама по себе многопоточность сейчас не имеет значения.С чем я борюсь, так это с тем фактом, что когда я использую функцию для опции 1, она успешно добавляет пары ключ: значение в словарь (называемые messages_and_times).Но как только функция заканчивается, словарь снова становится пустым, как видно из функции для варианта 2, который обращается к нему.
Внизу вы можете увидеть мой код.Я добавил следующие строки, чтобы проверить, что в словаре на каждом шаге:
print(dict(messages_and_times))
if not messages_and_times:
print("This dictionary is empty.")
else:
print("This dictionary contains items.")
Однако, похоже, он тоже не работает правильно.Прежде всего, он печатает «Этот словарь содержит элементы».выглядит ли напечатанный словарь пустым или нет.Во-вторых, следующая часть моего кода (clear () используется для очистки дисплея терминала):
def create_dictionary():
clear()
answer = input(
"Would you like to add another message? (yes/no)").lower()
if answer == "yes":
option_1()
elif answer == "no":
clear()
print("You will now be returned to the main menu.")
print(dict(messages_and_times))
печатает словарь, содержащий элементы, если я решил добавить их.Но если я добавлю строку
print(dict(messages_and_times))
в саму main_menu (), вышеупомянутая функция create_dictionary () вместо этого напечатает пустой словарь.Только этот один оператор print () в main_menu () влияет на то, показывает ли create_dictionary () словарь с элементами в нем.
Может кто-нибудь помочь мне понять, как разработать код, в котором словарь сохраняетэлементы, созданные одной функцией, чтобы к ним могли обращаться другие функции?
Заранее благодарим вас за ваше время и помощь,
import os
clear = lambda: os.system('cls')
def main_menu ():
list_of_messages = []
list_of_times = []
messages_and_times = zip(list_of_messages, list_of_times)
def option_1():
clear()
list_of_messages.append(
input("Please type in a message you would like to add to the list:"))
clear()
list_of_times.append(
input("Please type in the time of delay for this message:"))
def create_dictionary():
clear()
answer = input(
"Would you like to add another message? (yes/no)").lower()
if answer == "yes":
option_1()
elif answer == "no":
clear()
print("You will now be returned to the main menu.")
print(dict(messages_and_times))
if not messages_and_times:
print("This dictionary is empty.")
else:
print("This dictionary contains items.")
time.sleep(1.5)
main_menu()
else:
clear()
print("Please answer yes or no.")
time.sleep(1.5)
create_dictionary()
create_dictionary()
def option_2():
clear()
print(dict(messages_and_times))
if not messages_and_times:
print("This dictionary is empty.")
else:
print("This dictionary contains items.")
time.sleep(5)
main_menu()
clear()
selection = 0
while selection == 0:
print(("-" * 15) + "MAIN MENU" + ("-" * 15) + "\n")
print("1: Input a message and a corresponding time of delay before its display.")
print("2: Print your customized list of messages.")
print("3: Generate a list of random messages with random delays.\n")
selection = int(input(
"Please select one of the options, by typing in the corresponding number:"))
if selection == 1:
option_1()
elif selection == 2:
option_2()
elif selection == 3:
clear()
print("You've selected the third option.")
else:
clear()
print("Please select from options 1 - 3.\n")
time.sleep(1.5)
main_menu()