2016-03-19 20 views
-2

Also muss ich einzelne Wörter (speziell rot und blau) in einer Python-Liste zählen. Es kann jedoch nicht zum Beispiel rötlich oder blau sein. Hier ist, was ich getan habe (ich habe versucht, wenn Schlingen zu fangen, aber nicht funktioniert hat.)Zähle einzelne Wörter in 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

Was ist das Problem? – ZdaR

+0

Warum teilen Sie es nicht in Wörter auf (es gibt eine SO-Frage mit einer guten Antwort, wie man das macht), dann füttern Sie diese Wörter in einen 'collections.Counter' und bekommen Sie nur die Zählung davon? – ThiefMaster

+0

Hersteller nennen ihre Autofarben nicht "rot" und "blau", sondern verwenden Wörter wie Cherry, Matador und Tahiti. – cdarke

Antwort

2

Folgendes funktioniert.

# 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) 

Hier sind Ihre Fehler:

  • cars.append(car) tun und dann ist car.split() nicht "erweitern", um die car Zeichenfolge in der cars Liste.
  • car.split() passiert nicht direkt, es gibt eine Liste von Strings zurück. In Ihrem Fall ist diese Liste verloren, da Sie sie keiner Variablen zuweisen.
  • Sie verwenden auch nie die cars Liste.

Wenn Sie ein vollständigeres Zählwerkzeug wünschen, siehe https://docs.python.org/3/library/collections.html#counter-objects.

-1

Sie eine Schleife durch die Liste zu durchlaufen lassen können dann Ihre Werte Split zurückkehren und hängen aren nicht notwendig. Wenn Sie mit einem Codierungsproblem konfrontiert sind, versuchen Sie, die einfachste Antwort zu finden, und zwar ohne Abstriche bei der Substanz.

for words in cars: 
    cars.count('red', 'blue') 
    return whatever_you_want 
Verwandte Themen