Добро пожаловать в стек, дождливый день!При просмотре / запуске вашего кода сообщение с напоминанием пользователю ввести от одного до пяти появилось немного больше, чем я ожидал, наряду со случайными другими ошибками, которые вы, вероятно, еще не кодировали.Я бы предположил, что определение большего количества функций (для опций меню) и структурирование вашего кода сделают ваш код более легким для чтения и отслеживания.
Ниже (, что не является полным или безошибочным, кстати)), я реструктурировал ваш код так, чтобы при вызове main()
отображались пункты меню телефонной книги, и пользователь мог выбрать другой вариант.Вместо использования длинных «else-if» / elif между различными функциями, различные подпрограммы меню аккуратно организованы в одном операторе while
в функции main()
, а варианты выбора организованы в 5 различных функций: add()
/delete()
и т. Д. (Я помещаю фиктивный код в fns update / lookup / exit).Я надеюсь, что вы найдете это полезным.Я обнаружил, что если я ввел строку, когда в качестве входных данных ожидалась цифра, она выдала сообщение об ошибке.Я вставил комментарии, чтобы помочь.
Надеюсь, это поможет
phonebook= []
def main():
print("\n\tPhone Book") #title
# main menu
print("\n\tMain Menu")
print("\t1. Add a contact")
print("\t2. Delete a contact")
print("\t3. Update a contact")
print("\t4. Look up")
print("\t5. Quit")
menuOption = int(input("\nPlease select one of the five options "))
while menuOption not in(1,2,3,4,5) :
## insert try/except error handling needed here to handle NaN ##
print("\nPlease insert a numeric option between 1 and 5")
menuOption =int(input())
while menuOption <=5:
mOpt =menuOption
if menuOption == 1:
Add(mOpt)
elif menuOption == 2:
Delete(mOpt)
elif menuOption == 3:
Update(mOpt)
elif menuOption == 4:
LookUp(mOpt)
elif menuOption == 5:
ExitPhone(mOpt)
else:
print("Invalid input! Please insert a value between 1 and 5")
# add contact
def Add(mOpt):
##Option 1
add = ""
contact = True
print("\n\tADD CONTACT")
while contact == True:
if mOpt == 1:
print("\nNEW CONTACT")
while True:
name = input("Contact Name : ")
if name.replace(' ','').isalpha():
break
print('Please enter a valid name.')
while True:
try:
number = int(input("Contact Number : "))
if number:
break
except:
print("Please enter a valid number.")
if number in phonebook:
print("Contact already exists. Duplicates are not allowed.\n")
else:
#item = name + number this won't be found in the delete function
phonebook.append(name)
phonebook.append(number)
#print(phonebook)
print("Success! New contact has been added.\n")
add = input("Would you like to add another? Y (yes) or N (no)")
add = add.lower()
if add=="yes" or add=="y":
contact = True
else:
contact = False
main()
# delete
def Delete(mOpt):
redel = ""
delcontact = True
print("\n\tDELETE CONTACT")
while delcontact == True:
if mOpt == 2:
print("Enter Contact Name:")
name = input("Contact Name : ")
if name in phonebook:
## insert code here to find associated number
## and concatenate it if you have created an 'item'
phonebook.remove(name) #removes name, leaves the number
print(name, "has been removed from your contacts.")
#print(phonebook)
else:
print("Contact not found.")
redel = input("Would you like to delete another? Y (yes) or N (no)")
redel = redel.lower()
if redel =="yes" or redel =="y":
delcontact = False
else:
delcontact = True
main()
def Update(mOpt):
if mOpt == 3:
print("\nUpdate function")
main()
def LookUp(mOpt):
if mOpt == 4:
print("\nLookUp function")
main()
def ExitPhone(mOpt):
if mOpt == 5:
print ("Exit?")
main()
main()