помогите пожалуйста выдает ошибку " b[i] = str(b[i[0: 9]]) TypeError: 'int' object is not subscriptable"
st = input("Введите строку из нескольких слов, разделённых пробелами:__")
a = 1
b = st.split(" ")
for i in range(len(b)):
if len(b[i]) > 10:
b[i] = b[i[0: 9]]
print(f"{a} - {b[i]}")
a += 1
Пользователь вводит строку из нескольких слов, разделённых пробелами. Вывести каждое слово с новой строки. Строки необходимо пронумеровать. Если в слово длинное, выводить только первые 10 букв в слове.
Ответы (4 шт):
Я нашел решение нужно немного видоизменить 6 строчку
b[i] = b[i][: 10]
Ваша ошибка была в это строке b[i] = b[i[0: 9]]. Вы пытаетесь сделать срез индекса i[0: 9], а это целочисленное значение срез по которому невозможен, вот интерпретатор и ругается. Можно было так b[i][:10]. (конечный индекс не включительно)
Вот немного улучшенная версия вашего кода:
string = input("Введите строку из нескольких слов, разделённых пробелами:__")
counter = 1
splitted = string.split()
for word in splitted:
if len(word) > 10:
print(f"{counter} - {word[:10]}")
else:
print(f"{counter} - {word}")
counter += 1
Проблему уже указали - неправильная индексация. Можно написать совсем без индексации (enumerate). И слова обрабатывать срезами не обязательно, f-строки умеют форматировать их правильно:
s = input("Введите строку из нескольких слов, разделённых пробелами:__")
for i, w in enumerate(s.split(), start=1):
print(f'{i} - {w:.10}')
$ python words.py Введите строку из нескольких слов, разделённых пробелами:__11111111111111111111 222 333 1 - 1111111111 2 - 222 3 - 333
b=[ [1, 4, 3, 6] , [1, 3, 2, 5] ]
for i in range (len(b)): for j in range (len (b[i])): print(b[i][j], end='') print('\n')
for i in range (len(b)): b[i]
I