2016-03-19 5 views
-2

だから、私は個々の単語(具体的に赤と青)を入力する必要があります。 しかし、それは例えば赤みを帯びたものや青いもののようなものではありません。 は、ここで私がやったものだ(ループがそれをキャッチした場合、私が試したが、働いていません。)Pythonで単語を集める

r = 0 
b = 0 
cars = [] 
car = input("Cars: ") 
cars.append(car) 
car.split() 
r = car.count('red') 
b = car.count('blue') 
print("red:",r) 
print("blue:",b) 
+0

問題は何ですか? – ZdaR

+0

なぜそれを言葉に分割しないでください(そうするのがよい答えがあるのでSOの質問があります)、それらの言葉を 'collections.Counter'に送り、そこから数えてみてください。 – ThiefMaster

+0

製造元は車の色を「赤」と「青」と呼んでいないので、Cherry、Matador、Tahitiなどの言葉を使用しています。 – cdarke

答えて

2

次のように動作します。ここで

# replace by 'carsStr = input("Cars: ")' if you wish 
carsStr = "rad blue blueish redish red blue red" 
# str.split() returns a list of strings, never in-place 
cars = carsStr.split() 
r = cars.count('red') 
b = cars.count('blue') 
print("red:",r) 
print("blue:",b) 

あなたの過ちは、以下のとおりです。

  • cars.append(car)をやって、その後car.split()carsリストでcar文字列を "拡張" しません。
  • car.split()は、インプレースでは発生しません。文字列のリストを返します。あなたのケースでは、変数を変数に代入しないので、そのリストは失われます。
  • carsも再利用しないでください。

さらに完全なカウントツールを使用しない場合は、https://docs.python.org/3/library/collections.html#counter-objectsを参照してください。

-1

あなたは、あなたの値を返す スプリットリストを反復処理するループを作り、上がらない追加することができます必要はありません。コーディングの問題に直面したときは、物質を犠牲にすることなく、最も簡単で簡単な答えを見つけようとします。

for words in cars: 
    cars.count('red', 'blue') 
    return whatever_you_want 
関連する問題