2016-03-21 11 views
1

それを数えるが、出力は論理パイソン - 特定のキーワードを検索し、私は、文字列でどのように多くの特定のキーワードを検索しようと

input = raw_input('Enter the statement:') //I love u 
keyword = raw_input('Enter the search keyword:') //love 

count = 0 

for i in input: 
    if keyword in i: 
     count = count + 1 

print count 
print len(input.split()) 

期待

1 
3 

リアリティ

0 
3 
と類似していません

アドバイスをお願いします。ありがとうございます

+4

ヒント:あなたのループの中に 'print i'を置くと、出力はどうなると思いますか?それを試し、あなたの予測と一致するかどうかを確認してください。 – Kevin

+0

iはuが正確 –

+1

私 リットル V O E 、この1のようになりました。あなたは文字列を通して反復しています:各文字ではなく、それぞれの単語。単語の数*をどのように見つけたかを覚えていますか?似たようなことをして各単語を繰り返します。 – zondo

答えて

3

input文字列であるので、それを反復することは、個別にあなたの各文字を与えるだろう。あなたはおそらくsplitに意味それ:

for i in input.split(): 

リストの内包表記を使用すると、forループよりエレガントであり得ることを注意:あなたはこのように、リストに声明を有効にする必要があり

count = len([x for x in input.split() if x in keyword]) 
+1

'iのキーワード'と 'x ==キーワード'の方法論は同じではないことに注意してください。入力は「firetrucks put fire」とキーワード「fire」を、前者は2 countを返し、後者は1を返します。 –

+0

@JaredGoguen良い点、ありがとう!適切に編集されました – Mureinik

1

for i in inputを見てください。ここで、inputは、Pythonでiterableの文字列です。つまり、次のようなことができます。

for char in 'string': 
    print(char) 
# 's', 't', 'r', 'i', 'n', 'g' 

代わりにstr.countメソッドを使用できます。あなたが入力したキーワード「」、str.countが2回出現を見つけると、「私はリンゴをしたい」を持っている場合は、上記のコメントで述べたように

input.count(keyword) 

。 1つのオカレンスだけが必要な場合は、入力を分割し、各ワードの等価性を比較する必要があります。

sum(1 for word in input.split() if word == keyword) 
1

input = raw_input('Enter the statement:').split() //I love u 
keyword = raw_input('Enter the search keyword:')  //love 

count = 0 

for i in input: 
    if keyword in i: 
     count = count + 1 

print count 
print len(input) 

これにより、ループで目的の項目が正しく識別されます。

関連する問題