2013-06-02 3 views
5

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

raw_input('Are you male or female?') 

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

gender = '' 
while gender not in ['male', 'female']: 
    gender = raw_input('Are you male or female?') 

Я задаюсь вопросом, существует ли что-то вроде argparse что бы автоматизировать эту проблему, что-то вроде

import inputparse 
gender = inputparse.get_input(prompt='Are you male or female?', type=str, possible_input=['male', 'female']) 

и будет заботиться о автоматической проверки и т.д.?

+0

Учитывая то, что вы показали, достаточно легко написать свое собственное. Ваш вопрос заключается в том, есть ли стандартная или общая библиотека для этого? –

+0

Вы правы, это просто сделать, но так же, как argparse заботится гораздо больше, чем я бы реализовал сам (автоматически сгенерированный --help и т. Д.), Я бы подумал, что есть что-то сравнимое для этой проблемы – Hans

ответ

1

Necromanting снова ...

Пожалуйста, обратите внимание на click, если вам нужен простой вспомогательную библиотеку для вопросов. Основное внимание уделено параметрам командной строки, но, по-моему, это подходит для вашего случая использования.

1

Я не знаю, если такая библиотека существует, но вы можете написать функцию высокого порядка, как это:

def check_input(predicate, msg, error_string="Illegal Input"): 
    while True: 
     result = input(msg).strip() 
     if predicate(result): 
      return result 
     print(error_string) 

result = check_input(lambda x: x in ['male', 'female'], 
            'Are you male or female? ') 
print(result) 

Выход:

 
Are you male or female? foo 
Illegal Input 
Are you male or female? bar 
Illegal Input 
Are you male or female? Male 
Illegal Input 
Are you male or female? male 
male 
1

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

pickone

2

Из принятого ответа на this question: cmd библиотека может представлять интерес для Вас.

«Класс Cmd обеспечивает простую основу для написания интерпретаторов командной строки».

This Python Module of the Week page имеет его, и в нем есть несколько примеров и пояснений.

Смежные вопросы