python用户输入提示工具包

askp的Python项目详细描述


askpy是一个模块,它为python收集原始输入 程序更加健壮。它支持创建提示、条件 问题、验证和转换回答。

安装

安装askpy非常简单:

pip install askpy

用法

askpy的核心是建立问题并为 终端应用程序中的用户。

from askpy import Prompt

prompt = Prompt()

my_question = prompt.make_question('name', 'What is your name?')

prompt.add(my_question)

prompt.collect()

name = prompt.get_response('name')

虽然上面的代码可能隐藏了原始输入,但它不会给你更多的能量 比你在标准库中使用的还要多。Askpy允许您 轻松验证和转换您的回答:

from askpy import Prompt, Validator

prompt = Prompt()

question = prompt.make_question('age', 'How old are you?') \
                 .must(Validator.num_gt(20)) \
                 .transform(int)

prompt.add(question)

prompt.collect()

question = prompt.get_response('question')

上面的例子将确保用户进入20岁以上的年龄 否则就会责备他们。一旦它有一个有效的年龄,它就会把它 一个整数,供以后使用。

还有更多。

有时问题取决于其他人,为了处理这些案件 您通常依赖于条件语句和解析。与Askpy 你可以通过链式提问来做到这一点。

from askpy import Prompt, ValidationError, Validator

prompt = Prompt()


def validate_even(num):
    Validator.num(num)
    if int(num) % 2 != 0:
        raise ValidationError('Please choose an even number')


def validate_odd(num):
    Validator.num(num)
    if int(num) % 2 == 0:
        raise ValidationError('Please choose an odd number')


even_or_odd = prompt.make_question('even_or_odd', 'Do you prefer even or odd numbers?') \
                    .must(Validator.one_of(['even', 'odd']))

even_question = prompt.make_question('even', 'What is your favorite even number?') \
                      .must(validate_even) \
                      .transform(int)

odd_question = prompt.make_question('odd', 'What is your favorite odd number?') \
                     .must(validate_odd) \
                     .transform(int)

prompt.add(even_or_odd) \
      .then(lambda resp: resp == 'even', even_question, odd_question)

prompt.collect()

如您所见,您可以得到明确的提示,并能够保持 代码正常。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从通知中获取图像?   java按住按钮将循环一个动作,直到它被释放   JavaJavassist:如何将动态生成的类添加到特定的包中?   java我需要获取一个字符串并输出字符串中出现最多的单词   java合并排序堆栈溢出错误   java如何使用spring boot配置hibernate   Android中带选择器的Java TCP服务器NIO   java对于长度急剧变化的输入,什么是最佳的StringBuffer初始容量?   java SpringBoot:REST endpint中@RequestParam参数的自定义验证   JavaJPaQuery。fetchResults()已弃用,应如何替换它?   JavaJNA结构创建带来麻烦   java创建只包含响应中某些元素的POJO   java巨大的Perm Gen与应用程序大小相比,是否正常?   JavalibgdxMoveToAction。将setPosition()设置为负坐标,以将演员移出舞台