必须学好编程 发表于 2022-10-11 22:02:18

18讲统计字符串,看不懂哪里有问题。。。


x = input('请输入目标字符串:')

y = input('请输入子字符串(两个字符):')

cs = 0
z = len(x)
if y not in x:
print('目标字符串中无')
else:
for each1 in range(cs-1):
    if x == y:
      if x == y:
            cs += 1
print( cs )



shdih isnlnn   is isssisnnnk   isda
is

jackz007 发表于 2022-10-11 22:13:37

本帖最后由 jackz007 于 2022-10-11 22:26 编辑

      最大的问题来自这一句
cs = 0
z = len(x)
. . . . . .
      for each1 in range(cs - 1):         # cs 显然应该是 z
      这是我修改的代码
x = input('请输入目标字符串:')
y = input('请输入子字符串(两个字符):')
cs = 0
if y not in x:
    print('目标字符串中无')
else:
    each1 = 0
    while each1 < len(x) - 1:    # 因为 for 循环无法干预循环变量 each1,所以,应该用 while 循环
      if x == y:
            if x == y:
                cs += 1
                each1 += 1       # 为了跳过已经匹配的子串,这里需要为索引 each1 + 1,后面再加 1 就跳过 2 个字符了
      each1 += 1
print(cs)
      运行实况:
D:\\Python>python x.py
请输入目标字符串:shdih isnlnn   is isssisnnnk   isda
请输入子字符串(两个字符):is
5

D:\\Python>

必须学好编程 发表于 2022-10-12 00:33:40

这个CS的出现真的太粗心了{:10_250:},谢谢大佬指出,而且这个跳过已经匹配过的字符串中真的改进了好多,完美避免了需要匹配的两个字符是一个字母的情况,再次感谢{:10_256:}

dragov 发表于 2022-10-12 10:13:21



x=input("请输入1个字符串:")
y=input("请输入2个字符:")
cs=0
if y not in x:
    print("无")
else :
    for each in range (len(x)-1):
      if x==y and x==y:
            cs+=1
    print("%s个!"%cs)
页: [1]
查看完整版本: 18讲统计字符串,看不懂哪里有问题。。。