if/else 语句在 python 中接受大写和小写字母的字符串
Posted
技术标签:
【中文标题】if/else 语句在 python 中接受大写和小写字母的字符串【英文标题】:if/else statements accepting strings in both capital and lower-case letters in python 【发布时间】:2015-07-28 10:21:18 【问题描述】:“if”语句是否有一种快速的方法来接受一个字符串,无论它在 python 中是小写、大写还是两者兼而有之?
我正在尝试编写一段代码,其中可以输入数字“3”以及单词“three”或“Three”或任何其他大写和小写的混合体,但仍会被接受通过代码中的“if”语句。我知道我可以使用“或”让它接受“3”以及任何其他字符串,但是不知道如何让它在不止一种情况下接受字符串。到目前为止,我有:
if (Class == "3" or Class=="three"):
f=open("class3.txt", "a+")
【问题讨论】:
使用.lower()
规范化用户提供的值?
或者如果你有很多 if/else 那么我宁愿建议有一个 func foo 将 3 转换为 3...
【参考方案1】:
只需使用str.lower()
将Class
转换为小写并进行测试。
if Class == "3" or Class.lower() == "three":
f=open("class3.txt", "a+")
当然,你也可以使用str.upper()
。
if Class == "3" or Class.upper() == "THREE":
f=open("class3.txt", "a+")
最后一件事是您可以使用in
同时检查"3"
和"three"
。
if Class.lower() in "3", "three":
f=open("class3.txt", "a+")
将in
用于if
语句时,您有多种选择。您可以使用我使用的集合"3", "three"
、列表["3", "three"]
或元组("3", "three")
。
最后要注意的是,在"3"
上调用str.lower()
或str.upper()
会得到"3"
,但是在整数3
上调用它会抛出错误,所以你不能使用in
如果3
作为整数是Class
的可能值。
【讨论】:
在上一个示例中,您可能需要考虑使用 set 代替:'3', 'three'
。它不仅提供更快的查找速度,而且是适合工作的数据类型。【参考方案2】:
通常要进行不敏感的比较,我会将变量设为小写。尽管Class
是一个有风险的名称,因为class
是关键字,但您可以执行以下操作
Class = Class.lower()
if(Class =="3" or Class=="three"):
等等
只有当您不需要为以后的任何事情保留案例时,我才会将其保存为较低,特别是如果您还有其他比较,例如与“四”的比较
【讨论】:
在 if 之前使用 lower 就可以了,但你的Class == 3
将永远不会匹配,因为它试图将 int 3 匹配到字符串 3。应该有 Class == "3"
【参考方案3】:
您可以将in
运算符与list
一起使用。
if Class.lower() in ['3', 'three']:
仅供参考'3'.lower()
返回字符串3
。
>>> '3'.lower()
'3'
【讨论】:
【参考方案4】:使字符串小写:
Class.lower() == "three"
【讨论】:
【参考方案5】:您可以强制所有字符串为小写,并且只检查小写,如下所示:
if (Class == "3" or Class.lower() == "three"):
f=open("class3.txt", "a+")
【讨论】:
【参考方案6】:如果您使用string.lower()
,您可以将整个字符串转为小写,这样您就可以在 if 语句中检查它。只需将字符串替换为您的实际字符串即可。所以Class.lower()
【讨论】:
以上是关于if/else 语句在 python 中接受大写和小写字母的字符串的主要内容,如果未能解决你的问题,请参考以下文章
c语言:不用if,else语句,也不用循环条件等,输入一个字符,判断是否为大写字母