代码之家  ›  专栏  ›  技术社区  ›  sdot257

接受python中的小写或大写字母

  •  4
  • sdot257  · 技术社区  · 14 年前

    在菜单显示屏上工作,字母“M”将用户带回到主菜单。我怎样才能让它工作,不管字母“m”是大写还是小写?

    elif choice == "m":
    
    3 回复  |  直到 13 年前
        1
  •  12
  •   Ethan Furman    13 年前

    什么之中的一个

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

    在可维护性方面, 第四种选择是更好的,当您想扩展到多个字母字符串的不区分大小写比较时,因为您需要提供全部2个 n 第1和第3个备选方案的可能性。第二个选项仅适用于单个字符串。

    在第四种选择中,如果你想改变 'm' 其他信件。

    在效率方面, 第二种选择是最有效的,然后是第一种,然后是第三种,最后是第四种。这是因为第三种方法涉及更多的操作;而在Python中,函数调用和获取属性的速度很慢,因此这两种方法都使第四种方法相对较慢。

    http://pastie.org/1230957 用于拆卸和 timeit 结果。

    当然,除非你做了1000万次这样的比较,否则每一次都没有明显的差别。

        2
  •  7
  •   Ignacio Vazquez-Abrams    14 年前
    elif choice.lower() == "m":
    
        3
  •  1
  •   martineau    14 年前

    这种方式既明确又非常简洁:

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

    当然,要用这种方式表达它,需要支持的python2.7或3.x set literals . 我不知道它是如何将效率与其他答案进行比较的,但是对于这样的案例来说,这一点很重要。