Почему пока Loop не работает в моей программе? - PullRequest
0 голосов
/ 11 декабря 2019

Задача - создать программу, которая позволит пользователю вводить имя и номер телефона друга, а затем распечатывать список контактов, отсортированный по фамилии. Также использовать функцию.

Моя проблема в том, что он только просит пользователя сделать одно действие, а затем сразу же запрашивает детали. Следует попросить пользователя выбрать другое действие. Либо выйти, добавить контакт, показать контакты или сортировать контакты.

def menu():
  '''Display Menu'''
  print(
    """

    Contact Lists

    0 - Exit
    1 - Show Contacts
    2 - Add Contacts
    3 - Sort Contacts
    """
    )

def ask():
  user = None
  user = input("Action: ")
  print()
  return user

def main():
  menu()
  action = ask()
  names = []

  while action != 0:
    if action == "0":
      print("Closing Contact Lists.")

    elif action == "1":
      print("Contact Lists: ")
      for name in names:
        print(name)
#setting a condition if user enter "2" it will let user add name, last name and phone number
    elif action == "2":
        name = input("Add contact's first name: ") #input 1
        last_name = input("Add contact's last name: ") #input 2
        contact_number = input("Add phone number for the contact name: ") #input 3
        entry = (last_name, name, contact_number)
        names.append(entry)

#setting a condition if user enter "3" it will sort contact list according to last names
    elif action == "3":
        entry.sort(reverse=True) #use of sort() to sort lists of by last names
        print(names)
    else:
        print("Invalid Action!") 

main()

1 Ответ

0 голосов
/ 11 декабря 2019

Две ошибки в вашем коде:

  1. Вы должны читать ввод пользователя в конце каждого цикла.

Попробуйте добавить action = ask() ниже вашего последнего else условие.

редактировать

кодовые фрагменты:


#setting a condition if user enter "3" it will sort contact list according to last names
    elif action == "3":
        entry.sort(reverse=True) #use of sort() to sort lists of by last names
        print(names)
    else:
        print("Invalid Action!") 
    action = ask()
сортировка () должна выполняться для names (список), а не entry (кортеж)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...