Ter*_*ado 3 python if-statement python-3.x
对不起,我真的不知道怎么说这个问题所以看起来很模糊.
我想要做的基本上是我有一个代码,用于读取用户的输入并将其与某些字母进行比较,但此过程应该是不区分大小写的.所以我使用.lower()字符串方法.
if (letter.lower() == "a" or letter.lower() == "b" or letter.lower() == "c"):
Run Code Online (Sandbox Code Playgroud)
(在这种情况下,应接受值"A","B","C","a","b"和"c",并且拒绝分配给名称"letter"的所有其他值.)
这可以进一步缩短吗?可读性并不重要,除非它是人类舌头无法理解的真正的gobbledygook哈哈.
我试过了:
if (letter.lower() == "a" or "b" or "c"):
Run Code Online (Sandbox Code Playgroud)
这不起作用.也不是:
if (letter.lower() == ("a" or "b" or "c")):
Run Code Online (Sandbox Code Playgroud)
我很感激任何意见.提前致谢 :)
我认为你要找的是关键字in.以下可能是最"pythonic"的方式.
if letter.lower() in ['a','b','c']:
Run Code Online (Sandbox Code Playgroud)
那应该为你做.虽然,如果你正在寻找速度,最好创建一个字典或设置并从中进行查找.由于in运算符的复杂性是O(n)数组和字符串的平均值O(1),但是O(n)集合和字典的平均值和最差情况.
例如,
chars = set(['a','b','c'])
if letter.lower() in chars:
Run Code Online (Sandbox Code Playgroud)
如果您有兴趣阅读有关复杂性差异的更多内容,请参阅Python时间复杂性文档,这对于了解非常有用!