У меня есть две функции: одна проверяет, хотите ли вы добавить какие-либо элементы в словарь, а затем проверяет значение этого элемента и сохраняет эти данные в файл.Если вы закончили добавлять новые элементы в словарь, он переходит к следующей функции, которая проверяет, хотите ли вы изменить значение любых существующих в данный момент элементов.Если все хорошо, вы можете дать команду программе выйти.
Моя проблема - создать цикл while и заставить его вызывать первую функцию и запускать ее, но когда у вас больше нет элементов, которые нужно добавить, мне нужно, чтобы она вызывала следующую функцию, и вам не нужноизменить любые значения существующих на данный момент предметов.И затем, когда вводится команда выхода, она выходит из цикла while, и программа завершает работу.Я не могу понять, как заставить цикл while определять, что первая функция завершена, и вызывать следующую.
Я заставил программу работать должным образом, используя цикл без циклов.Но кто-то сказал мне, что это неряшливо.Также я заставил это работать, когда я построил функции в цикле while, но они сказали мне, что это тоже было неаккуратно.Поэтому я пытаюсь сделать цикл while после того, как функции построены, и вызвать функции внутри него.Заранее спасибо и, надеюсь, мой вопрос понятен.
# current dictionary
itemNames = {}
# checks if you want to add to your dictionary
def addToDictionary():
checkIF_newItems = raw_input("Add new item? 'YES' or 'NO' \n ").upper()
if checkIF_newItems.startswith("Y"):
newItems = raw_input("What type of item would you like to add today? \n")
newItems_Name = raw_input("What is the value of your new item? \n")
itemNames[newItems] = newItems_Name
return True
elif 'PRINT' in checkIF_newItems:
print "These are your current items. \n\n"
return True
elif checkIF_newItems.startswith("N"):
print("OKAY")
exit()
elif 'Exit' in checkIF_newItems:
exit()
# checks if you want to edit your current dictionary
def check_forChanges():
#checks user intent and if YES prints current keys
checkIf = raw_input("Change item value? 'YES' 'NO' 'EXIT' 'ADD' 'PRINT' \n").upper()
print("\n")
if checkIf.startswith("Y"):
for i in itemNames.keys():
print i
print("\n")
#finds what key to access and ask for its new value
itemChoice = raw_input("what item would you like to change the value of? \n")
return True
if itemChoice in itemNames.keys():
newName = raw_input("What is the new value? \n")
itemNames[itemChoice] = newName
print("You've changed your " + itemChoice + "'s value to " + newName + ".")
return True
print('\n')
return True
#if NO then checks to exit
elif checkIf.startswith("N"):
CLOSE = raw_input("OKAY then, would you like to exit? ").upper()
if CLOSE.startswith('Y'):
exit()
return False
elif EXIT.startswith('N'):
check_forChanges()
elif EXIT is 'print':
for i in itemNames:
print i
return True
# goes back to first function
elif 'ADD' in checkIf:
addToDictionary()
return True
#prints current values
elif 'PRINT' in checkIf:
for i in itemNames.values():
print i
return True
elif 'EXIT' in checkIf:
exit()
return False
# main routine
validIntro = False
while not validIntro:
addToDictionary()
if addToDictionary() == False:
continue
else:
exit()
check_forChanges()
if check_forChanges() == False:
break
else:
continue
Но я ожидаю, что смогу запустить эту программу, пока пользователь не решит выйти.Также я ожидаю, что единственный цикл while будет вызывать обе мои функции, но только когда это необходимо.