С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/193: Рейтинг темы: голосов - 193, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 25.08.2015
Сообщений: 14

Ошибка string index out of range

01.02.2016, 10:42. Показов 37310. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется вывести на экран вложенный список, но выдаёт ошибку. Почему?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/env python3
 
zero = ['***','* *','* *','***']
one = [' *','**',' *',' *']
two = ['***','  *',' *','***']
 
digits = [zero, one, two]
 
while True:
    bigdigits = input('Введите число: ')
 
    if bigdigits.isdigit():
        print('Правильно')
        break
    else:
        print('Это не число!')
        
list = 0
 
while list < 2:
    prisv = bigdigits[list]
    list1 = 0
    while list1 < 3:
        print(prisv[list1])
        list1 += 1
    list +=1
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.02.2016, 10:42
Ответы с готовыми решениями:

Ошибка string index out of range
file_path = 'test.txt' file = open(file_path) strnew='' i=0 for line in file: for i in range(len(line)): ...

string index out of range
Подскажите как исправить, не сильна в пайтон . Ошибка при запуске string index out of range. Буду очень благодарна. import os ...

IndexError: string index out of range
кодируются символы из интервала 1F600—1F64F таблицы символов Юникода. Используется кодировка UTF-8. Формат ввода: На первой строке...

11
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
01.02.2016, 10:48
Python
1
2
3
4
list = 0
 
while list < 2:
    prisv = bigdigits[list]
Во-первых, не нужно называть переменную именем структуры данных (list).

Во-вторых, вот ввожу я 1, bigdigits[list] сработает, потому как символ с индексом 0 будет в bigdigits, а вот с индексом 1 или 2 уже не будет - вот и ругается.
0
0 / 0 / 0
Регистрация: 25.08.2015
Сообщений: 14
01.02.2016, 13:35  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
Во-первых, не нужно называть переменную именем структуры данных (list).
О, точно не заметил я этого. Благодарю. Но теперь другая проблема появилась:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/env python3
 
zero = ['***','* *','* *','***']
one = [' *','**',' *',' *']
two = ['***','  *',' *','***']
 
digits = [zero, one, two]
 
while True:
    bigdigits = input('Введите число: ')
 
    if bigdigits.isdigit():
        print('Правильно')
        break
    else:
        print('Это не число!')
        
list = 0
 
while list < 2:
    prisv = digits[bigdigits]
    list1 = 0
    while list1 < 3:
        print(prisv[list1])
        list1 += 1
    list +=1
Выдаёт ошибку: List indices must be integers, not str
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
01.02.2016, 13:39
и опять list = 0

проблема описана в тексте ошибки - индексы листа могут быть только целыми числами, не строками.

bigdigits = input('Введите число: ') <-- будет строка
prisv = digits[bigdigits] <-- нужно целое
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
01.02.2016, 13:45
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
zero = ['***','* *','* *','***']
one = [' *','**',' *',' *']
two = ['***','  *',' *','***']
 
digits = [zero, one, two]
 
while True:
    try:
        bigdigits = int(input('Введите число: '))
    except ValueError:
        print('Это не число')
    else:
        break
        
n = 0
 
while n < 2:
    prisv = digits[bigdigits]
    list1 = 0
    while list1 < 3:
        print(prisv[list1])
        list1 += 1
    n +=1
Ты вот английский понимаешь хоть на минимальном уровне (если нет, то учи или пользуйся переводчиком)? Интерпретатор тебе сам полностью рассказывает,что за ошибка, а ты на форуме вопросы задаешь.

Цитата Сообщение от Dronnn1349 Посмотреть сообщение
list = 0
Нельзя для переменой такое имя использовать. list это название стандартной функции, которые ты перекрываешь.
0
01.02.2016, 13:55

Не по теме:

Кто бы еще объяснил, что это за бред вообще? Использовать 2 списка + 3 цикла для вывода текста их 3 строк…

0
0 / 0 / 0
Регистрация: 25.08.2015
Сообщений: 14
01.02.2016, 13:56  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
индексы листа могут быть только целыми числами
Так я же ввожу число, питон его как строку считает? А как тогда сделать чтобы именно числа вбивались?

Цитата Сообщение от alex925 Посмотреть сообщение
Ты вот английский понимаешь хоть на минимальном уровне
Понимать-то я понимаю, только толку от этого мало, если непонятно откуда корни ошибки растут. Мне непонятно, я этот питон третий день только вижу.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
01.02.2016, 14:00
Цитата Сообщение от Dronnn1349 Посмотреть сообщение
Так я же ввожу число, питон его как строку считает?
функция input всегда строку возвращает, если нужен другой тип данных, то надо самому конвертировать (смотри пример выше)
0
 Аватар для Vigi
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
01.02.2016, 14:05
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
zero = ['***','* *','* *','***']
one = [' *','**',' *',' *']
two = ['***','  *',' *','***']
 
digits = [zero, one, two]
 
bigdigits = 0
while True:
    tmp = input('Введите число: ')
 
    if tmp.isdigit():
        print('Правильно')
        bigdigits = int(tmp)
        break
    else:
        print('Это не число!')
 
list = 0
 
while list < 2:
    prisv = digits[bigdigits]
    list1 = 0
    while list1 < 3:
        print(prisv[list1])
        list1 += 1
    list +=1
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
01.02.2016, 14:24
Цитата Сообщение от Vigi Посмотреть сообщение
bigdigits = 0
Это зачем? Имелось ввиду?
Python
7
8
9
10
11
12
13
bigdigits = ""
while not bigdigits.isdigit():
    if bigdigits:
        print('Is not a number')
    bigdigits = input('Enter a digit: ')
print('Right!')
bigdigits = int(bigdigits)
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
01.02.2016, 14:32
Marinero, Да там не только это непонятно. Там ещё непонятно зачем вообще tmp нужно
0
 Аватар для Vigi
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
01.02.2016, 14:35
Хз не нужно конечно...

Добавлено через 2 минуты
Цитата Сообщение от alex925 Посмотреть сообщение
Там ещё непонятно зачем вообще tmp нужно
Я понимаю, что код бредовый, лично я бы проверку через исключения делал как в вашем alex925 примере. Просто из нерабочего варианта автора сделал рабочий.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.02.2016, 14:35
Помогаю со студенческими работами здесь

IndexError: string index out of range
Требуется подсчитать количество замен в определенных индексах. программа работает для файла в котором 10 последовательностей, однако при...

Шифратор вертикальной перестановки - string index out of range
В общем, постала задача организовать шифратор+дешифратор. Но пока что я даже шифратор победить не могу. Нашёл на просторах интернета...

Ошибка IndexError: list index out of range
Traceback (most recent call last): File &quot;C:/Users/Андрей/Desktop/х02.py&quot;, line 116, in &lt;module&gt; step = AI() File...

Ошибка string index out of range
Выскакивает ошибка индекса, не могу понять, в чем проблема for i in range(len(docs)): for j in range(len(docs)): ...

Ошибка: String index out of range
Выходит ошибка string index out of range n=int(input()) k=0 q=0 l='' for i in range(1,n+1): k= if l&gt;l: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru