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

时间:2011-11-28 21:47:03

标签: 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

2 个答案:

答案 0 :(得分:2)

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))

答案 1 :(得分:1)

我同意Cat的解决方案。 FWIW,你可能想研究切片语法。如果你正在进行字符串操作,切片是一个基本工具。我没有从你的代码中看到你为什么要反转你的字符串,但是如果必须的话,试试这个:

my_string = "abcdefg"
reversed = my_string[::-1] # here's the slice magic
print(reversed)