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

luc*_*axi 4 python

在菜单显示上工作,字母"m"将用户带回主菜单.如果字母"m"是大写还是小写,我怎么能这样才能使它工作?

elif choice == "m":
Run Code Online (Sandbox Code Playgroud)

ken*_*ytm 13

之一

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

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

使用第4种替代方案时,如果要将其更改'm'为其他字母,也不可能错过.

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

有关反汇编和结果,请参见http://pastie.org/1230957timeit.

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

  • OP已经说过这是用于菜单显示,即用户输入.为什么要追求时间? (2认同)