2

「TypeError: 'str' object is not callable」というエラーが表示されました。これは私のコードです:

m=input()  
while(m!='0'):  
    c=0  
    for letter in range(len(m)):  
        if(m(letter) == '1'or '2'):  
            c++  
        if((m(letter) == '7'or'8'or'9') and (m(letter -1)=='2')):  
            c--  
        if(m(letter)=='0'):  
            c--  
    print(c)  
    m=input()  

このエラーはどういう意味ですか?

4

3 に答える 3

3

いくつかの問題があります:

  1. Python は、インデックス付けに角括弧を使用します: m[letter].
  2. Python には後置インクリメント演算子がありません。を使用する必要がありますc += 1
  3. a == 'b' or 'c' or 'd'(a == 'b') or ('c') or ('d')は常に と解釈されますTrue。あなたがしたいa in ('b', 'c', 'd')
于 2013-08-18T09:49:05.837 に答える
2

エラーは、文字列を呼び出そうとしていることを示しており、呼び出し可能ではありません。文字列内の指定された位置から char を取得したいようです。次に、m[letter]代わりに使用しm(letter)ます。

また、 if 条件が正しくありません。たとえば、代わりに を次のようにif(m(letter) == '1'or '2'):使用する必要があります。inif m[letter] in ('1', '2')

また、Python には++andがありません。代わりにandを使用します。--+=1-=1

whileまた、 and条件には冗長な括弧がいくつかありifます。

改善されたコードは次のとおりです。

m = str(input())
while m != '0':
    c = 0
    for letter in range(len(m)):
        if m[letter] in ('1', '2'):
            c += 1
        if m[letter] in ('7', '8', '9') and m[letter - 1] == '2':
            c -= 1
        if m[letter] == '0':
            c -= 1
    print(c)
    m = str(input())

それが役立つことを願っています。

于 2013-08-18T09:49:33.093 に答える
1

文字列またはリストのいずれかで、角かっこを使用してインデックスを作成する必要があります。だから使う

m[letter]

m(letter). By using paranthesis, you are calling a functionm は関数ではなく文字列のみであるため、エラーをスローする m`の代わりに

于 2013-08-18T09:48:33.717 に答える