Python 3.8中使用find()查找子串未触发预期输出的原因咨询
问题原因及解决办法
你的代码没输出'find it'的核心原因是对str.find()方法的返回值理解有误:
str.find(sub)会返回子串sub在原字符串中首次出现的索引位置;如果找不到则返回-1。- 在你的代码里,
str2 = "E2"刚好是str1的开头,所以str1.find(str2)返回0。 - 而Python中
0属于假值(Falsy),在if条件判断中会被视为False,因此不会执行print语句。
正确的写法有两种:
- 检查返回值是否不等于
-1:
str1 = "E2ab" str2 = "E2" if str1.find(str2) != -1: print("find it")
- 更推荐使用
in运算符,语义更清晰:
str1 = "E2ab" str2 = "E2" if str2 in str1: print("find it")
内容的提问来源于stack exchange,提问作者YksYiZov
相关产品推荐
相关产品推荐

