Пользовательские запросы usint pyinputplus.inputMenu () - PullRequest
1 голос
/ 25 февраля 2020

Я новичок здесь и новичок в python. (В настоящее время учусь из книги AutomateTheBoringStuff). В главе 8 книги: https://automatetheboringstuff.com/2e/chapter8/, в нижней части веб-страницы есть учебный проект под названием Sandwich Maker .

Цель состоит в том, чтобы создать программа, которая спрашивает пользователей, какие ингредиенты они хотели бы в свой бутерброд. Чтобы спросить пользователей, какой тип хлеба им нужен, я использую функцию inputMenu () из модуля pyinputplus следующим образом:

>>>import pyinputplus as pyip
>>>bread = pyip.inputMenu(['White', 'Brown', 'Sourdough'])
Please select one of the following:
* White
* Brown
* Sourdough
|

Работает нормально. Теперь я хотел бы настроить подсказку: вместо "Пожалуйста, выберите одно из следующего:" , я хотел бы спросить "Какой тип хлеба вы хотели бы?" I я пытаюсь сделать следующее:

>>>breadCustom = pyip.inputMenu(['White', 'Brown', 'Sourdough'], prompt = 'What type of bread would you like?')
What type of bread would you like?|

Вот моя проблема: варианты , указанные в первом аргументе функции, больше не отображаются пользователю.

Итак, я пытаюсь использовать другое настраиваемое приглашение:

breadCustom = pyip.inputMenu(['White','Brown','Sourdough'], prompt='What type of bread would you like ? \n* WHITE \n* BROWN \n* SOURDOUGH \n')
What type of bread would you like ? 
* WHITE 
* BROWN 
* SOURDOUGH 
|

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

Мой вопрос: возможно ли ввести пользовательское приглашение, которое только заменит первое предложение приглашения по умолчанию: "Пожалуйста, выберите одно из следующее: " и отобразить под значениями в списке передано варианты ?

Для справки справка (pyip.inputMenu) возвращает:


inputMenu(choices, prompt='_default', default=None, blank=False, timeout=None, limit=None, strip=None, allowRegexes=None, blockRegexes=None, applyFunc=None, postValidateApplyFunc=None, numbered=False, lettered=False, caseSensitive=False)
    Prompts the user to enter one of the provided choices.
    Also displays a small menu with bulleted, numbered, or lettered options.
    Returns the selected choice as a string.
...
...

Я заметил, что аргумент для prompt равен '_ default' что означает символ одинарной кавычки вокруг него ?

Заранее большое спасибо за ваш вклад.

Томас

1 Ответ

0 голосов
/ 27 февраля 2020

Я действительно нашел ответ, который отвечает на мой первый вопрос: сохраняя значения choices в списке перед вызовом функции inputMenu () и обращаясь к ним в строке приглашения.

>>>import pyinputplus as pyip

>>>l = ['White', 'Brown', 'Sourdough']

>>>bT = pyip.inputMenu(l, 
prompt = 'What type of bread would you like ?\n* %s \n* %s \n* %s \n' 
%(l[0], l[1], l[2]))
What type of bread would you like ?
* White 
* Brown 
* Sourdough 
|

С этим синтаксисом я буду в состоянии изменить значения в списке (типы хлеба) в будущем без необходимости переписывать код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...