2016-10-01 3 views
0

Я пытаюсь закодировать слово скремблер, но когда я пытаюсь добавить буквы с моего слова, используя индекс, я получаю сообщение об ошибке «String index out the range». Я пробовал это без «ввода», но как только я добавил его, у меня возникли проблемы. мой код:python 'string index out of range' error

a = input('word ->') 
b = [] 
count = 0 
while count < 5: 
    b.append(a[count]) 
    count +=1 
print(b) 

было бы здорово, если бы кто-то может помочь. спасибо

+0

если у вас есть слово короче 5 букв, то вы не можете получите 5-ю букву - и вы получите свою ошибку. BTW: вы можете использовать 'b = a [: 5]' – furas

ответ

1

Потому что, когда вы даете ввод меньше 5, [count] не указана. Так что попробуйте это один:

a = input('word ->') 
b = [] 
count = 0 
while count < len(a): 
    b.append(a[count]) 
    count +=1 
print(b) 
+0

отлично работает, спасибо большое – Lomore

0

Проблема в том, что ваш счетчик увеличит каждый цикл до тех пор, пока он не достигнет 5. Если строка на входе короче 5, вы получите ошибку индекса.

2

Я не уверен, что вы пытаетесь достичь здесь, но посмотрите на это:

word = input('word -> ') 
b1 = [] 
# Iterate over letters in a word: 
for letter in word: 
    b1.append(letter) 
print(b1) 

b2 = [] 
# Use `enumerate` if you need to have an index: 
for i, letter in enumerate(word): 
    # `i` here is your `count` basically 
    b2.append(letter) 
print(b2) 

# Make a list of letters using `list` constructor: 
b3 = list(word) 
print(b3) 

assert b1 == b2 == b3