假设你做了一个“智能问答机器人”,不管用户怎么问,机器人都能回答预设的问题:
程序代码如下:

- 输出🤖:Hello! Nice to meet you!
- 用户输入how are you,输出🤖:I'm fine, thank you!
- 用户输入bye,输出🤖:Bye! See you!,并且退出
- 用户输入其他,输出🤖:Sorry, I don't understand.
可以看到,用户在输入how are you的时候,输出正常,但如果用户输入How are you,也就是首字母大写时,程序认不出来了。因为"How are you" 不等于 "how are you",大小写不一样,Python 觉得它们是两个不同的字符串。
如果用户输入 HELLO、HOW ARE YOU、Hello 呢?都会认不出来。
如果聊天这么死板,确实有些不合适。
怎么办?—— 把所有输入统一转成小写再比较。
lower() 可以把字符串里的所有英文字母变成小写。
举个例子
用 lower() 改造机器人:
你会发现,运行后,不管输入 how are you、How are you、HOW ARE YOU、hOw ArE YoU,全部都能匹配。
同样,如果想把字母全部转成大写,用 upper()
注意:lower()和upper()后面的()不能省略。
大小写的问题解决了,但用户还可能多按空格。
比如输入了 " how are you "(前后有空格),空格也是字符,所以前后带空格的字符串和前后不带空格的字符串是不一样的。
可以用 strip() 去掉两端的空格。
继续用 strip() 改造机器人:
注意:strip() 只去掉两端的空格,中间的空格不会动。"how are you" 中间的多个空格不会被去掉。
上面我们用了英文,但有的小伙伴可能更习惯中文。
中文版本有一个问题:中文没有大小写,lower() 对中文不起作用。
但中文用户可能输入时会加多余文字,比如:
用户输入 "你好呀",机器人想匹配 "你好"
用户输入 "你叫什么名字",机器人想匹配 "你叫什么"
这时候,我们不需要用户输入完全等于预设词,只需要包含预设词就行。
这时,就需要用到in了。
in 用来判断一个字符串是否包含另一个字符串。
程序改写如下:
运行结果如下:
你会发现,即使用户输入的内容不是精确匹配“你好”,只要包含“你好”,也可以输出预期内容。今天我们学了三个字符串方法和一个关键字:
字符串还有其他方法,每种方法都能完成一种功能。以后我们将通过具体的案例来熟悉字符串常用的方法。