#python
#python
Вопрос:
Ниже у меня есть список строчного алфавита. Моя задача — получить индекс строчной буквы из списка и добавить сдвиг. Сдвиг может варьироваться и отличаться от 1000. Это также может быть 50000 или 10 и т.д. Если индекс сдвиг больше 25, он должен продолжать отсчет от «a» до тех пор, пока (индекс сдвиг) не будет достигнут и не вернет букву. Мне не разрешено использовать библиотеки.
Мое решение не работает для больших сдвигов, таких как 1000
shift = 1000
alphaList = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
index = alphaList.index('u')
index = (index shift) - len(alphaList) # this part has to be adjusted
print(index)
print(alphaList[index])
Результат должен быть: ‘g’
что я получаю:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-20-8d37e597ee25> in <module>
5 index = (index shift) - len(alphaList)
6 print(index)
----> 7 print(alphaList[index])
IndexError: list index out of range
----------------------------------------------------------------------------
Комментарии:
1. Вам нужно исследовать оператор модуля.
Ответ №1:
Вы ищете оператор по модулю. Из документации (курсив мой):
Оператор % (по модулю) выдает остаток от деления первого аргумента на второй.Числовые аргументы сначала преобразуются в общий тип. Аргумент с нулевым значением right вызывает исключение ZeroDivisionError. Аргументами могут быть числа с плавающей запятой, например, 3,14% 0,7 равно 0,34 (поскольку 3,14 равно 4*0.7 0.34 .) Оператор по модулю всегда выдает результат с тем же знаком, что и его второй операнд (или ноль); абсолютное значение результата строго меньше абсолютного значения второго операнда
index = (index shift) % len(alphaList)
Ответ №2:
Вместо этого используйте оператор модуля здесь:
index = (index shift) % len(alphaList)