为什么在某些情况下输出不好?

2024-05-21 04:15:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我觉得自己很愚蠢,不知道为什么在某些情况下产出不好。 这是输出(在结尾) 它应该在给定的字符串中找到第一个子字符串,例如: sim('banan','na')->;'na'

 def rev (str):
    rev_str=''
    i =  len(str)-1;
    while (i >= 0):
        rev_str += str[i];
        i = i-1;
  return rev_str;
  ######################################
 def sim (str,sub):
   sub_len = len (sub);
   start = str.index(sub);
   rev_str = rev(str)
   rev_sub = rev(sub)

if (start ==0):
    start =1;

end = start + rev_str.index(rev_sub,start-1);

ret_val = ''
print start , end
for n in range (start,end):
    ret_val += str[n];

return ret_val;

            print sim('abcdef', 'abc')
            print sim('abcdef', 'bc')
            print sim('banana', 'na')

the output : 
        1 4
        bcd
        1 4
        bcd
        2 4
        na

Tags: 字符串indexlenreturndefrevvalsim
2条回答

我同意猫的解决办法。FWIW,您可能想学习一下切片语法。如果你在做字符串操作,切片是一个基本的工具。我不明白为什么要从代码中反转字符串,但如果必须反转,请尝试以下操作:

my_string = "abcdefg"
reversed = my_string[::-1] # here's the slice magic
print(reversed)
def sim(haystack, needle):
    if needle in haystack:
        return needle

如果需要索引:

def sim(haystack, needle):
    index = haystack.index(needle) # throws ValueError when not found
    return (index, index + len(needle))

相关问题 更多 >