在Python中接受小写或大写字母

时间:2010-10-18 20:35:43

标签: python

在菜单显示上工作,字母“m”将用户带回主菜单。如果字母“m”是大写还是小写,我该如何才能使它工作?

elif choice == "m":

3 个答案:

答案 0 :(得分:12)

其中一个

elif choice in ("m", "M"):
elif choice in "mM":                       # false positive if choice == ''
elif choice == 'm' or choice == 'M':
elif choice.lower() == 'm':

在可维护性方面,当您想要扩展到多字母字符串的不区分大小写的比较时,第4种选择更好,因为您需要提供所有2 N 第一和第三种选择的可能性。第二种选择仅适用于单字符字符串。

使用第4种选择时,如果要将'm'更改为其他字母,也不可能错过。

在效率方面,第二种选择是最有效的,然后是第1种,然后是第3种,最后是第4种。这是因为第三种选择涉及更多的操作;虽然Python中的函数调用和获取属性很慢,但两者都使得第四种选择相对较慢。

请参阅http://pastie.org/1230957了解反汇编和timeit结果。

当然,除非你进行1000万次这样的比较,否则每一次之间都没有可感知的差异。

答案 1 :(得分:7)

elif choice.lower() == "m":

答案 2 :(得分:1)

这种方式既明确又简洁:

    elif choice in {'m', 'M'}:

当然,以这种方式表达它需要支持set literals的Python 2.7或3.x.我不知道它如何将效率与其他答案进行比较,但怀疑这对于这样的案例非常重要。