2017-09-26 21 views
0

我想寫一個for循環來查找字符串中的特定單詞。我知道Python中有這樣一個班輪,但我正在練習for循環,我想看看如何使用for可以識別特定的單詞,因爲它可以識別特定的字母(如元音)。我一直在閱讀一些問題,我認爲代碼應該是這樣的:如何計算一個字符串中的字符數量在python中使用for循環3

s='bananasdasdnansbanana' 
b='banana' 
def count_words(s,b): 
    answer = 0 
    for i in range(len(s)): 
     if any(s[i:].startswith(b) for b in s): 
      answer += 1 
    print(answer) 

,但它不打印任何東西。當我在同一個字符串中查找元音時,我做了類似的事情,但是現在我知道我在「安排」單詞「banana」中的字符,然後將其與字符串比較,即該部分的字符串:

if any(s[i:].startswith(b) for b in s): 

如果你能幫助我我真的會讚賞它。

謝謝。

+1

備註:如果你正在練習循環,爲什麼使用'any'? 「任何」實際上只是一個隱藏的循環。 –

+0

我不知道。謝謝。 – chrislopez

+0

另外,請正確格式化您的代碼(點擊編輯按鈕即可)。它目前沒有正確縮進。 –

回答

0
  1. 您的代碼不會打印,因爲你不調用函數(你只定義它),你應該在末尾添加一個命令調用funtion:

    count_words(s,b)

  2. 你的函數實際上算上字符數量在字符串s:

    s='bananasdasdnansbanana' b='banana' def count_words(s,b): answer = 0 for i in range(len(s)): //Loop over each character in s if any(s[i:].startswith(b) for b in s): // create a list contain at least current character =>any will always return True answer += 1 print(answer)

  3. 鑽機HT代碼:

    s='bananasdasdnansbanana' b='banana' def count_words(s,b): answer = 0 for i in range(len(s)): if s[i:].startswith(b): answer += 1 print(answer) count_words(s,b)

+0

我正在學習python,你的回答不僅幫助我解決了這個問題,而且幫助我理解了我的錯誤。非常感謝你。 – chrislopez

+0

這是我的榮幸:) –

0

如果您的目標是使用for循環,您可以找到要查找的單詞的長度,然後檢查長度相同的較大字符串部分,並查看它們是否匹配。除非您故意要,否則您不需要使用any。事情是這樣的:

s='bananasdasdnansbanana' 
b='banana' 
def count_words(s,b): 
    word_length = len(b) 
    answer = 0 
    for i in range(len(s) - len(b) + 1): 
     if s[i:i+word_length] == b: 
      answer += 1 
    return answer 

注意我也改變了你的printreturn。它以任何方式工作。

0
s='bananasdasdnansbanana' 
b='banana' 
def count_words(s,b): 
    answer = 0 
    counter = 0 
    if b in s: 
     for i in range(len(s)): 
      if s[i]!=b[counter]: 
       counter=0 
      else: 
       counter+=1 
      if counter == len(b): 
       answer+=1 
       counter = 0 
    print(answer) 

count_words(s, b) 

上述算法首先檢查S是否存在至少一次香蕉。然後,它將循環查找計數。

相關問題