A s1 = 'aabbcc' s2 = 'abc' count = s1.count(s2) if count > 0 : print('s2是s1的子串') else: print('s2不是s1的子串') B s1 = 'aabbcc' s2 = 'abc' index = s1.index(s2) if index > -1: print('s2是s1的子串') else: print('s2不是s1的子串') C s1 = 'aabbcc' s2 = 'abc' find = s1.find(s2) if find != -1 : print('s2是s1的子串') else: print('s2不是s1的子串') D s1 = 'aabbcc' s2 = 'abc' if s2 in s1: print('s2是s1的子串') else: print('s2不是s1的子串')
正确答案:B
1. B选项中使用的index()方法在查找失败时会抛出ValueError异常。当s2="abc"不是s1="aabbcc"的子串时,程序就会抛出异常而不是继续执行。
2. 其他选项都是安全的字符串查找方法:
- A选项使用count()方法:返回子串在字符串中出现的次数,没找到返回0,不会抛异常
- C选项使用find()方法:找到返回索引位置,没找到返回-1,不会抛异常
- D选项使用in运算符:返回True/False布尔值,不会抛异常
这里的s2="abc"确实不是s1="aabbcc"的子串,因为虽然abc这三个字符都在s1中出现过,但它们并不是连续的。所以B选项的index()方法一定会抛出ValueError异常。
实际编程中,如果需要判断子串,建议使用A、C、D这样的安全方法,除非确实需要异常处理机制。