首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接受来自user - Python的多种输入变体

接受来自user - Python的多种输入变体
EN

Stack Overflow用户
提问于 2020-02-07 14:11:41
回答 2查看 277关注 0票数 0

所以我正在构建一个基于ASCII的计算器,我想要考虑到用户在输入时的变化(比如在if/else序列中同时接受"Quit“和"quit”、"QUIT“、"q”和"Q“)。这是我想出来的,但可能有更好的方法,因为它只接受列出的第一个输入类型。

代码语言:javascript
复制
elif input == ("j" or "J" or "linear" or "Linear" or "quadratic" or "Quadratic" or "linear and 
quadratic" or "Linear and Quadratic" or "Linear and quadratic" or "linear and quadratic" or "LINEAR 
AND QUADRATIC"):

在这种情况下,如果使用任何其他输入变量,序列将只接受"j“并抛出my else错误消息。有没有更好的方法呢?我使用python 3btw。

EN

回答 2

Stack Overflow用户

发布于 2020-02-07 14:15:16

我建议将期望值/期望值传递给某种函数:

代码语言:javascript
复制
def get_input(message, desired_values, is_int=False):
    user_input = input(message)
    if user_input in desired_values:
        return user_input if not is_int else int(user_input)
    else:
        return get_input("Wrong input, possible inputs: {}: ".format(
            ", ".join(desired_values)), desired_values, is_int)

input = get_input("type", ['v1', 'v2'])
票数 0
EN

Stack Overflow用户

发布于 2020-02-07 14:20:35

你可能想要

代码语言:javascript
复制
quit = {"q", "quit", ...}
if input in quit:
    # actually quit

此外,将输入转换为小写可能会更容易(使用input.lower() in quit),所以您不需要编写所有的变体(例如"quit","Quit",“QUIT”……如果这不是问题的话,它也会接受"qUiT“)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60108012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档