|
1鱼币
a=input("text:")
b=input("words:")
c=b.split() #因为如果有多个的话,有空格就代表不是一个,所以分开
d=[]
for i in c: #有多少就遍历多少
for j in range(a.count(i)): #如果一个字符在字符串里有很多个,那就一个一个遍历,直到结束
if j==0: #之所以有两种情况,是因为表达式不一样
e=a.index(i) #找到第一个字符的位置
d.append([e,e+len(i)-1]) #将第一个字符的位置加上第一个字符的长度,就可得到第一个元素,如果a.count(i)==1,这个循环结束
if j>0:
e=a.index(i,e+1,-1) #当a.count(i)>1时,接着寻找i,但是要给出范围,除去前面寻找的那个字符,e+1就可以避免了
d.append([e,e+len(i)-1])
f=d.sort() #把d的结果从小到大排序
print (f)
# 最后,感觉自己想的没毛病,难道是自己的一厢情愿?
三个问题:
1.string.count(str)是不会数与上一次数的重复的字符串
举个例子:
- >>> a = "FCFCF"
- >>> a.count("FCF")
- 1
复制代码
有两个FCF,但count函数只数了一个,所以你不能用count函数
2.string.index(str, e+1, -1)
你这样写的话是不会数最后一个的
需改成string.index(str,e+1,len(string))
3.list.sort()没有返回值
举个例子:
- >>> li = [2,1]
- >>> print(li.sort())
- None
- >>> print(li)
- [1,2]
复制代码
所以f=d.sort()应该为d.sort()
代码:
- a=input("text:")
- b=input("words:")
- c=b.split() #因为如果有多个的话,有空格就代表不是一个,所以分开
- d=[]
- for i in c: #有多少就遍历多少
- temp = a
- count = 0
- while True:
- idx = temp.find(i)
- if idx == -1:
- break
- temp = temp[idx+1:]
- count += 1
- for j in range(count): #如果一个字符在字符串里有很多个,那就一个一个遍历,直到结束
- if j==0: #之所以有两种情况,是因为表达式不一样
- e=a.index(i) #找到第一个字符的位置
- d.append([e,e+len(i)-1]) #将第一个字符的位置加上第一个字符的长度,就可得到第一个元素,如果a.count(i)==1,这个循环结束
- if j>0:
- e=a.index(i,e+1,len(a)) #当a.count(i)>1时,接着寻找i,但是要给出范围,除去前面寻找的那个字符,e+1就可以避免了
- d.append([e,e+len(i)-1])
- d.sort() #把d的结果从小到大排序
- print(d)
- # 最后,感觉自己想的没毛病,难道是自己的一厢情愿?
复制代码
|
最佳答案
查看完整内容
三个问题:
1.string.count(str)是不会数与上一次数的重复的字符串
举个例子:
有两个FCF,但count函数只数了一个,所以你不能用count函数
2.string.index(str, e+1, -1)
你这样写的话是不会数最后一个的
需改成string.index(str,e+1,len(string))
3.list.sort()没有返回值
举个例子:
所以f=d.sort()应该为d.sort()
代码:
|