String index out of range python как исправить
Перейти к содержимому

String index out of range python как исправить

  • автор:

IndexError: string index out of range — как исправить?

Я попытался сделать программу, которая конвертирует текст с кириллицы на латиницу. Причём, буквосочетание «кв» должно конвертироваться в «qu».
«кв», конечно, конвертируется в «qu», но, если вместо «кв» ввести просто «к», то вместо «k» программа выдаёт ошибку «IndexError: string index out of range» в строке 6: if q == «к» and qw[i+1] == «в» :
Прошу помощи. Сам код прилагаю ниже:

qwerty = qw = input("введи букву/слово") i = 0 q = qw[i] while i
  • Вопрос задан более двух лет назад
  • 119 просмотров

1 комментарий

Простой 1 комментарий

Python error: "IndexError: string index out of range"

I'm currently learning python from a book called 'Python for the absolute beginner (third edition)'. There is an exercise in the book which outlines code for a hangman game. I followed along with this code however I keep getting back an error in the middle of the program. Here is the code that is causing the problem:

if guess in word: print("\nYes!", guess, "is in the word!") # Create a new variable (so_far) to contain the guess new = "" i = 0 for i in range(len(word)): if guess == word[i]: new += guess else: new += so_far[i] so_far = new 

This is also the error it returns:

new += so_far[i] IndexError: string index out of range 

Could someone help me out with what is going wrong and what I can do to fix it? edit: I initialised the so_far variable like so:

so_far = "-" * len(word) 

Ошибка string index out of range

Author24 — интернет-сервис помощи студентам

Ошибка string index out of range
Требуется вывести на экран вложенный список, но выдаёт ошибку. Почему? #!/usr/bin/env python3 .

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

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

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

Автоматизируй это!

Эксперт Python

7107 / 4611 / 1215
Регистрация: 30.03.2015
Сообщений: 13,244
Записей в блоге: 29

ЦитатаСообщение от ddSanitt Посмотреть сообщение

Подскажите как исправить?

не запрашивать у строки индекс, которого в ней нет. Включаешь отладчик и смотришь почему ты выходишь за рамки

Регистрация: 09.05.2019
Сообщений: 5
Так я же индекс элемента в строке запрашиваю
Автоматизируй это!

Эксперт Python

7107 / 4611 / 1215
Регистрация: 30.03.2015
Сообщений: 13,244
Записей в блоге: 29

ddSanitt, так ты же меняешь line то есть у тебя цикл идет еще по старой длине, а ты уже обрезал ее. В итоге инлекс который был бы валиден для оригианльной строки для измененной ( в строке 10) уже выходит за границы. Ты же не думаешь что твой цикл фор как то узнает об изменении длины строки?

Регистрация: 09.05.2019
Сообщений: 5
А блин, на заметил. Спасибо
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

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

Ошибка IndexError: list index out of range
Traceback (most recent call last): File "C:/Users/Андрей/Desktop/х02.py", line 116, in <module>.

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

Ошибка: 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): .

Шифр цезаря ошибка IndexError: string index out of range
Шаг 4 Сообщение Знання багато місця не займає alfavit = 'АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ' #.

String index out of range
в общем переписываю код из NodeJs, очень трудно копать инфу что по python,что по Nodejs. В общем.

string index out of range
s = str(input()) b = '' i=0 while i<=len(s)-1: for j in range(s.count(s),0,-1): .

Или воспользуйтесь поиском по форуму:

Ошибка string index out of range

Author24 — интернет-сервис помощи студентам

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

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

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

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

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

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

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

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

Эксперт по компьютерным сетям

5898 / 3355 / 1035
Регистрация: 03.11.2009
Сообщений: 10,003

1 2 3 4
list = 0 while list  2: prisv = bigdigits[list]

Во-первых, не нужно называть переменную именем структуры данных (list).

Во-вторых, вот ввожу я 1, bigdigits[list] сработает, потому как символ с индексом 0 будет в bigdigits, а вот с индексом 1 или 2 уже не будет - вот и ругается.

Регистрация: 25.08.2015
Сообщений: 14

ЦитатаСообщение от Jabbson Посмотреть сообщение

Во-первых, не нужно называть переменную именем структуры данных (list).

О, точно не заметил я этого. Благодарю. Но теперь другая проблема появилась:

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

Эксперт по компьютерным сетям

5898 / 3355 / 1035
Регистрация: 03.11.2009
Сообщений: 10,003

и опять list = 0

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

bigdigits = input('Введите число: ') prisv = digits[bigdigits]
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830

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 это название стандартной функции, которые ты перекрываешь.

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

Меню пользователя @ Marinero

Регистрация: 25.08.2015
Сообщений: 14

ЦитатаСообщение от Jabbson Посмотреть сообщение

индексы листа могут быть только целыми числами

Так я же ввожу число, питон его как строку считает? А как тогда сделать чтобы именно числа вбивались?

ЦитатаСообщение от alex925 Посмотреть сообщение

Ты вот английский понимаешь хоть на минимальном уровне

Понимать-то я понимаю, только толку от этого мало, если непонятно откуда корни ошибки растут. Мне непонятно, я этот питон третий день только вижу.

2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830

ЦитатаСообщение от Dronnn1349 Посмотреть сообщение

Так я же ввожу число, питон его как строку считает?

функция input всегда строку возвращает, если нужен другой тип данных, то надо самому конвертировать (смотри пример выше)

636 / 476 / 179
Регистрация: 28.05.2012
Сообщений: 1,414

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

Эксперт NIX

2795 / 2038 / 682
Регистрация: 02.03.2015
Сообщений: 6,509

ЦитатаСообщение от Vigi Посмотреть сообщение

bigdigits = 0
Это зачем? Имелось ввиду?

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)

2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
Marinero, Да там не только это непонятно. Там ещё непонятно зачем вообще tmp нужно
636 / 476 / 179
Регистрация: 28.05.2012
Сообщений: 1,414

Хз не нужно конечно.

Добавлено через 2 минуты

ЦитатаСообщение от alex925 Посмотреть сообщение

Там ещё непонятно зачем вообще tmp нужно

Я понимаю, что код бредовый, лично я бы проверку через исключения делал как в вашем alex925 примере. Просто из нерабочего варианта автора сделал рабочий.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Ошибка IndexError: list index out of range
Traceback (most recent call last): File "C:/Users/Андрей/Desktop/х02.py", line 116, in <module>.

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

Ошибка: 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): .

Шифр цезаря ошибка IndexError: string index out of range
Шаг 4 Сообщение Знання багато місця не займає alfavit = 'АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ' #.

string index out of range
s = str(input()) b = '' i=0 while i<=len(s)-1: for j in range(s.count(s),0,-1): .

String index out of range
в общем переписываю код из NodeJs, очень трудно копать инфу что по python,что по Nodejs. В общем.

Или воспользуйтесь поиском по форуму:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *