2012-06-19 4 views
1

7.3 и задавался вопросом, почему в следующем примере строка «гоночный автомобиль» рассматривается как тип int. Заранее спасибо за любую помощьОбъект 'int' не является итерабельным

>>> s = "racecar" 

>>> for i in len(s): 

    print(s[i]) 

Traceback (most recent call last): 

    File "<pyshell#9>", line 1, in <module> 

    for i in len(s): 

TypeError: 'int' object is not iterable 
+0

Это не " _string ''racecar''_', это' 'len (s)' ", который вы хотите пропустить. Результат «len (s)' »- это' int'. – Tadeck

ответ

8

Потому что вам нужно использовать range(len(s)), чтобы получить список целых чисел перебрать (или xrange в Python 2.x).

В качестве альтернативы, вы можете использовать enumerate():

for i, val in enumerate(s): 
    print(i) 
    print(val) # equivalent to s[i] 

Или просто не использовать индекс в первую очередь:

for c in s: 
    print(c) 
+2

+1 за использование индекса. Серьезно, где вы поняли, что хотите или нужно использовать индекс? Предположительно, с другого языка программирования. Python лучше, чем это. –

Смежные вопросы