2017-06-05 17 views
1

私は合計をしようとした場合、私は私が唯一の上位数またはべきではどのような構文の問題カウンターで大文字と小文字を区別する方法は?

print sum(1 for i in c if i.isupper()) 

File "<ipython-input-21-66a7538534ee>", line 4 
    print sum(1 for i in c if i.isupper()) 
      ^
SyntaxError: invalid syntax 

を得た私は

Counter({' ': 8, 
     ',': 1, 
     '.': 1, 
     '?': 1, 
     'H': 1, 
     'M': 1, 
     'R': 1, 
     'T': 1, 
     'a': 2, 
     'd': 1, 
     'e': 5, 
     'f': 1, 
     'g': 1, 
     'h': 2, 
     'i': 2, 
     'l': 2, 
     'n': 1, 
     'o': 4, 
     'r': 3, 
     's': 3, 
     't': 1, 
     'u': 2, 
     'w': 1, 
     'y': 2}) 

を持っている結果として、コレクション

s = 'Hello Mr. Rogers, how are you this fine Tuesday?' 
import collections 
c = collections.Counter(s) 

で何かを考えていますカウンターから下がっていますか?

+1

あなたの例では、文字iだけをカウンタに供給する必要があることは明らかではありませんか大文字か小文字ですか? –

+0

@JonathonReinhartはい、どうですか?私の合計は機能しません。 – MishaVacic

答えて

3

を:

sum((1 for x in c if x.isupper())) 
4 

EDITを:@Błotosmętekとしてsugest、あなたの印刷で()が不足している、私はあなたはpython3を使用していると思います。print()

+0

エラーの位置から判断すると、彼は 'print'関数呼び出しに欠けています - 明らかに彼はPython 3.xを使用しているので、それは次のようになります:' print(sum(x in c x.isupper() )) '(とにかく、@ Nurzhanの答えはおそらくOPが本当に望んだものです) –

+0

@Błotosmętek、実際にはい、ありがとう。 – Netwave

+0

@DanielSanchezはい、私はPython 3を使用しています – MishaVacic

3

あなたはこのような何か試すことができます:あなたは、発電機expresionに()に欠ける

import collections 

s = 'Hello Mr. Rogers, how are you this fine Tuesday?' 
c = collections.Counter([ch for ch in s if ch.isupper()]) 
# Change to ch.islower() if you need lower case 
# c = collections.Counter([ch for ch in s if ch.islower()]) 
print(c) 
関連する問題