В то время как цикл работает с пользовательским вводом и командами - PullRequest
3 голосов
/ 15 октября 2019

Мне нужно сделать программу для хранения контактов (имя и номер телефона). Первый шаг - запустить программу, если на входе не указано «exit». Программа должна предлагать набор опций. Моя проблема в том, что когда я вхожу в опцию, она снова предлагает набор опций, и мне нужно во второй раз ввести опцию, чтобы она запустилась.

Я вроде понимаю, почему программа делает это, поэтому я попробовалПравда, но это не сработало.

def main():
    options = input( "Select an option [add, query, list, exit]:" ) 
    while options != "exit" : 
        options = input( "Select an option [add, query, list, exit]:" )
        # Offrir un choix de commandes
        if options == "add":
            add_contact(name_to_phone)
        if options == "query":
            query_contact(name_to_phone)
        if options == "list":
            list_contacts(name_to_phone)

Select an option [add, query, list, exit]:add
Select an option [add, query, list, exit]:add
Enter the name of a new contact:

Ответы [ 3 ]

2 голосов
/ 15 октября 2019

Это из-за вашего первого варианта, сделайте так вместо этого:

def main():
    options = None
    while options != "exit" : 
        options = input( "Select an option [add, query, list, exit]:" )
        # Offrir un choix de commandes
        if options == "add":
            add_contact(name_to_phone)
        if options == "query":
            query_contact(name_to_phone)
        if options == "list":
            list_contacts(name_to_phone)

1 голос
/ 15 октября 2019

Вам не нужно устанавливать какое-либо значение для 'option' перед входом в цикл. Вы можете использовать бесконечный цикл (в то время как True), чтобы проверить значение 'option' внутри цикла и выполнить соответствующее действие. Вы можете выйти из цикла, если пользователь введет «выход». Попробуйте это:

def main():
    #options = input( "Select an option [add, query, list, exit]:" ) 
    while True : 
        options = input( "Select an option [add, query, list, exit]:" )
        # Offrir un choix de commandes
        if options == "add":
            add_contact(name_to_phone)
        if options == "query":
            query_contact(name_to_phone)
        if options == "list":
            list_contacts(name_to_phone)
        if options == "exit":
            break
0 голосов
/ 15 октября 2019

Это потому, что ваша первая строка в цикле while также запрашивает параметры.

Вы можете удалить строку options = input( "Select an option [add, query, list, exit]:" перед циклом while и установить опцию = '' при запуске.

def main():
options = '' 
while options != "exit" : 
    options = input( "Select an option [add, query, list, exit]:" )
    # Offrir un choix de commandes
    if options == "add":
        add_contact(name_to_phone)
    if options == "query":
        query_contact(name_to_phone)
    if options == "list":
        list_contacts(name_to_phone)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...