Python - 忽略字母大小写

时间:2016-02-24 10:48:37

标签: python

我有一个if语句:

rules = input ("Would you like to read the instructions? ")
rulesa = "Yes"
if rules == rulesa:
    print  ("No cheating")
else: print ("Have fun!")

我希望用户能够回答Yes,YES,yES,yes或任何其他大小写,并且代码知道他们的意思是Yes。

5 个答案:

答案 0 :(得分:8)

对于这个简单示例,您只需将小写的rules"yes"进行比较:

rules = input ("Would you like to read the instructions? ")
rulesa = "yes"
if rules.lower() == rulesa:
    print  ("No cheating")
else: 
    print ("Have fun!")

对于很多情况都可以,但请注意,某些语言可能会给您带来棘手的结果。例如,德语字母ß给出以下内容:

"ß".lower() is "ß"
"ß".upper() is "SS"
"ß".upper().lower() is "ss"
("ß".upper().lower() == "ß".lower()) is False

所以我们可能会遇到麻烦,如果我们在调用lower()之前我们的字符串是大写的。 希腊语也可以满足相同的行为。阅读帖子 https://stackoverflow.com/a/29247821/2433843了解更多信息。

因此,在一般情况下,您可能需要使用 str.casefold() 函数(因为python3.3),它处理棘手的情况,是建议的案例独立比较的方法< /强>:

rules.casefold() == rulesa.casefold()

而不仅仅是

rules.lower() == rulesa.lower()

答案 1 :(得分:2)

使用以下内容:

if rules.lower() == rulesa.lower():

在测试相等性之前,这会将两个字符串转换为小写。

答案 2 :(得分:2)

一种常见的方法是使输入大写或小写,并与大写或小写字词进行比较:

rulesa = 'yes'
if rules.lower() == rulesa:
   # do stuff

答案 3 :(得分:0)

您可以进行大写比较或小写比较。

例如:

rulesa.upper() == rules.upper()

rulesa.lower() == rules.lower()

两者都会为您输出 true

答案 4 :(得分:-2)

rules = raw_input("Would you like to read the instructions? ")
rulesa = "Yes"
if (rules == rulesa) or (rules.lower() == rulesa.lower()) or rules.upper() == rulesa.uppper():
   print  ("No cheating")
else: print ("Have fun!")

无论输入如何,每次都会有效,并且会保留用户输入的内容!玩得开心。