あなたがしようとしているため、このエラーを受けていますraw_input
:for letter in raw_input:
を繰り返します。
しかし、Pythonでは、__iter__()
メソッドを持つオブジェクトだけが反復可能であり、raw_input
にはこのメソッドがありません(これはPythonにも組み込まれています)。
>>> print type(raw_input)
<class 'builtin_function_or_method'>
>>> print dir(raw_input)
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']
あなたは結果代わりにraw_input()
のを反復処理したい:あなたはtype()
を使用してオブジェクトの種類とdir()
を使用して、オブジェクトのメソッドのリストを調べることができます。ここでコードが改善されなければならないいくつかの方法があります(例:letters = raw_input('Please enter a string :')
)
- いずれかが可変に
raw_input()
の結果を割り当てるか、直接raw_input('Please enter a string :')
を反復します。
- 辞書には
dict
以外の変数名を使用してください。 dict
はすでに組み込み自体として存在しています。
for
と条件付きif
ブロックで適切な字下げを使用してください。 1、 '私は':1、 '
最終結果:「{ 'E' た私はfor letter in raw_input():
にfor letter in raw_input:
を変更したときに
dic = {}
letters = raw_input('Please enter a string :')
for letter in letters:
if letter not in dic.keys():
dic[letter] = 1
else:
dic[letter] += 1
print dic
# output:
# Please enter a string :success
# {'e': 1, 's': 3, 'c': 2, 'u': 1}
ありません本当にあなたの質問に関連して、しかしdefaultdictを調べる。この種のコードには役立ちます。あなたの質問に対する答えはすでに以下で扱っています。 raw_input()の結果を反復したいのですが、それはあなたがしたことではありません。 –
さて、この質問は、著者自身が行った研究はほとんどないことが明らかです。このような質問を実際に投稿する前に、少しだけ自分の努力を示し、最初に表示されるエラーメッセージをコピーしてください。 (または、少なくともあなたのエラーメッセージをGoogleにコピーして、10回のうち8回を助ける) –