2011-11-28 72 views
0

我感到很蠢,不知道爲什麼在某些情況下輸出不好。 這裏是輸出(末尾) 它前人的精力找到在例如給定的字符串的第一子串: SIM( '巴南', '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 
+0

它你想要的輸出不清楚爲什麼你想要它...... – Neil

+0

我想找到第一次出現較大弦的子串,例如sim('banana','na')將輸出'na'。 – 0x90

回答

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

我同意貓的解決方案。 FWIW,你可能想研究一下slice語法。如果你在做字符串操作,切片是一個基本的工具。我不從你的代碼中看到,爲什麼你想扭轉你的字符串,但如果你必須嘗試這個辦法:

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