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语句,也不用循环条件等,输入一个字符,判断是否为大写字母

Python:为啥 if-else 一行语句在 else 中不能与 continue 一起使用?

0003输出语句分支结构 if else 随机数

Python流程控制语句

python的for else语句

python基础--条件语句if else