2017-06-06 4 views
-2

なぜコードを実行するためにstr値をfloatと比較しようとしているかのように列挙型を使用できないことを理解しようとしていますif-elseブロックたとえば、次のように動作します。Floatオブジェクトは列挙型で添字付けできませんが、範囲とif-elseで動作します

testa = [23.12, 34.15, 25.12, 34.23] 

if testa[0] == 'word': 
    print('It's is a string') 
else: 
    print('Not a string') 

これで「Not a string」が正常に印刷されます。次のコードブロックも機能します。

for i in range(len(testa)): 
    if testa[i] == 'word': 
     print('Its a string') 
    else: 
     print('Not a string') 

上記の2つのコードブロックは、期待通りに機能します。今、私が列挙を使用したい:

for i, number in enumerate(testa, start=0): 
    if number[i] == 'word': 
     print("Its a string") 
    else: 
     print("Not a string") 
TypeError: 'float' object is not subscriptable 

それは私が私が私がちょうどインデックスカウンタ用iそれを供給し、それをインクリメントするの世話を列挙してみましょうと考えていたように、特定の指標についていくことができるよということが重要ですそれ以外の何かが私が見ていないところでここで起こっています。

+0

'enumerate'が何をするのか分かりません。私の推測では、 'testa [i] == 'word'なら' if 'を実行したかったということです。 – slallum

+0

@slallum私はリストを反復処理し、その中のすべての要素をテストする必要があります – Biggen

答えて

3

enumeratevalueの番号は、すでにtesta[i]です。これは行列の要素であり、浮動小数点数なのでインデックスできません。 if number == 'word'

+0

私はSOに投稿する前に、実際にこれを試したことを誓ったことがあります。どちらかといえば、テストコードをどうにかして混乱させてしまいました。ありがとう、私は家に帰るとすぐに試してみるよ! – Biggen

1

number[i]の代わりにnumberを使用してください。

すでにtestaを繰り返していることに注意してください。

関連する問題