Как мне запрограммировать цикл while для этой конкретной ситуации? - PullRequest
0 голосов
/ 03 мая 2019

Создать функцию execChoice (выбор). o Используя способ Python для выполнения оператора switch, использующего объект словаря с вариантами выбора имени, вызовите функцию из словаря, в котором ключ, указанный в параметре выбора строки, передан в функцию.

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

o Если ключ отсутствует в словаре, должна быть вызвана функция по умолчанию в модуле MenuOptions.

Для рассматриваемого цикла while:

• Создать выбор переменной и присвоить ей пустую строку.

• Создайте цикл while, который не остановится, пока значение для выбора переменной не станет значением 'X'. Эта проверка должна быть без учета регистра.

• В цикле while:

o Вызвать функцию getChoice в модуле Menu и назначить возвращаемое значение для выбора переменной. o Вызовите функцию execChoice в модуле Menu и передайте выбор переменной этой функции.

Я правильно делал подобное кодирование в предыдущих ситуациях, однако, это остановило меня. Кажется, я не могу обойти эту часть цикла while, и у меня также есть проблемы с ситуацией над ней.

def execChoice(choice):
    choices = 
          {
           "S": showPilots(),
           "A": addPilot(),
           "D": deletePilot(),
           "X": done()
           }
    if dict.keys() not in choices:
        default()


from .Menu import *

choice = []
while choice is True:
    choice = getChoice(Menu)
'''
Cannot figure out what i need to add after this
'''

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

1 Ответ

1 голос
/ 03 мая 2019

То, как вы определяете этот словарь, это фактический вызов showPilots() функции, addPilot() функции и т. Д.

Я думаю, что словарь предназначен для хранения объекты функций , но на самом деле не вызывают их:

def execChoice(choice):
    choices = {
        "S": showPilots,
        "A": addPilot,
        "D": deletePilot,
        "X": done
    }
    if choice in choices:
        return choices[choice]
    else:
        return default

И тогда вы бы назвали это так:

# get the function we are supposed to call
f = execChoice(user_input)
# now execute the function
f()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...