I was trying a leetcode, where we have to calculate the number of words in a sentence. The code I wrote calculates the number of words but for some reason it just appends 1 to the max_words list each time, regardless of the number of words.
def mostWordsFound(sentences):
max_words=[]
for i in range(0,len(sentences)):
num_of_words=1
for j in range(0,len(sentences[i])):
if sentences[i][j]==" ":
num_of_words+=1
print(num_of_words)
if j==len(sentences[i][j])-1:
print("reached here")
max_words.append(num_of_words)
j+=1
i+=1
print(max_words)
sentences = ["please wait.", "continue to fight.", "continue to win."]
mostWordsFound(sentences)
Advertisement
Answer
You were using len(sentences[i][j]) which will always be 1 because it represents a letter/char. You need to use len(sentences[i]) to get the length of the sentence. Also there’s no need to use i += 1 or j += 1 as its value will automatically increment in for loop.
Code after modifications:
def mostWordsFound(sentences):
max_words=[]
for i in range(0,len(sentences)):
num_of_words=1
for j in range(0,len(sentences[i])):
if sentences[i][j]==" ":
num_of_words+=1
print(num_of_words)
if j==len(sentences[i])-1:
print("reached here")
max_words.append(num_of_words)
print(max_words)
sentences = ["please wait.", "continue to fight.", "continue to win."]
mostWordsFound(sentences)
However, if you are interested here’s a simple implementation:
def mostWordsFound(sentences):
max_words= [sentence.split() for sentence in sentences] # This line splits the word on the basis of a space and creates a list.
n_of_words = [len(word) for word in max_words] # This line counts the number of all words in split sentence list.
print(n_of_words)
sentences = ["please wait.", "continue to fight.", "continue to win."]
mostWordsFound(sentences)