winlox,
кстати, попробуйте реализовать простейший шифратор, использующий шифр Цезаря. Там вам наверняка понадобится работать со строками.
К тому же. Получать элемент строки по индексу - на самом деле это всего лишь частный случай получения элемента коллекции по индексу. Таким же образом можно работать с массивами, например. вот там это достаточно часто применяется.
Допустим, у нас есть строка вида "Мама мыла раму". Попробуйте заменить в ней каждую вторую букву на букву "ё". Конечно, вы снова спросите, а зачем это вообще нужно... Именно это, вряд ли кому-то нужно, поэтому попробуйте создать массив с цифрами от 0 до 100. Затем пройдитесь по этому массиву и выведите на экран квадраты каждого второго числа, каждого пятого числа.
Но и это, по большому счету, не имеет практической пользы. Наиболее часто вызывают элемент по его индексу, когда наверняка знаю его индекс. При этом индекс не обязательно знать самому программисту, его можно получать динамически. Допустим, при реализации шифра Цезаря вам понадобится массив со всеми буквами русского языка. Потом нужно будет по шифруемому тексту пройтись в цикле. Для каждого символа шифруемого текста нам нужно получить индекс этого символа в нашем алфавите, затем к каждому этому индексу прибавить значение сдвига (на сколько будет сдвинут весь наш алфавит(об этому лучше где-то почитайте)) и вызвать по новому индексу новый символ. Когда мы полностью обойдем нашу шифруемую строку, то на выходе получим зашифрованный текст. В общем, я приложу исходник этого шифра с комментариями внутри. Там мы по индексу, вычисляемому динамически, вызываем нужный нам элемент.
# -*- coding: utf-8 -*-
source_text = str(input("Введите исходный текст: "))
shift_value = int(input("Введите значение сдвига: "))
alphabet = list("йцукенгшщзхъфывапролджэячсмитьбюё")
result = ""
for s in source_text:
# Получаем новый символ из каждого старого
# % len(alphabet) нужно для того, чтобы никогда не выходить за рамки
# нашего алфавита
new_shifted_symbol = alphabet[(alphabet.index(s) + shift_value) % len(alphabet)]
# Добавляем новый сивол в результирующую строку
result += new_shifted_symbol
print(result)
P.S.
Подобные вопросы возникают только по неопытности. Вернее даже оттого, что перед вами никогда не стояло никаких программистских задач, которые бы потребовали применения средств языка для их решения. Попробуйте написать что угодно. Пусть даже самую простую программу. И когда перед вами появится задача реализации чего-либо, то вы уже сами начнете думать о том, как и какую конструкцию/элемент языка применять. Просто изучая теорию, вы не выучите язык и не разберетесь в нем.
Прошу прощения за некоторую скомканность изложения. Надеюсь, что помог.
P.P.S.
Давно ничего не писал на python, поэтому код может быть не совсем "pythonic".