到目前为止,我已到达此处,但程序始终返回1。 我不想使用库函数。请帮忙! 因为,我是初学者,我希望代码尽可能简单。谢谢!
str = input("Enter The String: ")
substr = input("Enter The Sub-String: ")
l = len(str)
count = 0
es = ''
for i in range (l):
es += str[i]
if es == substr:
if str[i+1] != ' ':
count = 0
else:
count += 1
es = ''
print (count)
答案 0 :(得分:2)
首先,不要调用自己的变量str
;它掩盖了内置的Python。
其次,你正在迭代错误的值,子串的长度不是字符串。
第三,你的逻辑是完全错误的,你建立输入字符串直到子字符串的长度,每次测试它是否是子字符串,如果你到达空格则重置计数。
相反,请尝试:
count = 0
for i in range(len(string)):
if string[i:i+len(substring)] == substring:
count += 1
print(count)
这会移动一个与字符串中子字符串长度相同的“窗口”,每个匹配的数量为1。
更好的是,正如JAB所说,只需使用count
!
答案 1 :(得分:0)
如果您希望它尽可能简单,您应该使用Python提供的内置功能。我不建议使用str
作为变量名称,因为它是内置类型之一;它有效,因为str
不是保留关键字,但隐藏str
类可能不是一个好主意。
s = input("Enter The String: ")
sub_s = input("Enter The Sub-String: ")
print(s.count(sub_s))
来自str.count
的文档字符串:
S.count(sub [,start [,end]]) - > INT
返回字符串S [start:end]中substring sub的非重叠出现次数。可选参数start和end被解释为切片表示法。