Удаление повторяющихся и конструктивных символов - PullRequest
0 голосов
/ 20 апреля 2020

Создайте программу, которая предлагает ввести предложение и удаляет повторяющиеся символы, если они являются последовательными.
Например,
Input
Что это такое?
Output
Что такое это?

У меня ошибка при попытке запустить эту программу:
TypeError: string indices must be integers

Вот код:

string = str(input("Enter the sentence: "))
    for i in string:
        if string[i] == string[i+1]:
            print(i)

Ответы [ 3 ]

1 голос
/ 20 апреля 2020

Вот для l oop, чтобы выполнить sh this:

st = list(input("Enter the sentence: "))
for c in range(len(st)-1):
    if st[c] == st[c+1]:
        st[c+1] = ''
print("".join(st))

Итерация с использованием for i in ... присваивает i каждому итерированному значению требуемой итерации. Вы не можете индексировать с ним:

a = [3, 2, 1]
for i in a:
    print i
3
2
1

Вместо этого используйте range:

a = [3, 2, 1]
for i in range(len(a)):
    print i, a[i]
0, 3
1, 2
2, 1
1 голос
/ 20 апреля 2020

Ваша ошибка в том, что Python для l oop может сделать намного больше, чем просто подсчитывать индексы. Эта часть for i in string фактически помещает каждый символ string в переменную i. Поэтому ваш код ломается, потому что вы на самом деле делаете это:

if string['W'] == string['W' + 1]

Для того, чтобы он работал, используйте встроенную функцию len(), с range().

string = str(input("Enter the sentence: "))
for i in range(len(string) - 1):
    if string[i] == string[i+1]:
         print(i)

ОБНОВЛЕНИЕ: согласно новому редактированию, @AJ Uppal дает полное решение. В будущем вам следует рассмотреть возможность использования отладчика и пошаговое выполнение вашей программы. Таким образом, вы сможете проверить, что на самом деле происходит, и намного легче обнаруживать ошибки такого рода.

1 голос
/ 20 апреля 2020

Попробуйте с диапазоном:

string = str(input("Enter the sentence: "))
    for i in range(len(string )-2):
        if string[i] == string[i+1]:
            print(i)
...