Как я могу заставить код выводить каждый n-й символ строки

#python #list #tuples

Вопрос:

Поэтому я пытаюсь найти, как заставить мой код распечатывать каждый n: int термин в заданном списке, и вот мой код

 text = 'monosodium glutamate' def GetNthLetters(text, n: int):  builtstring = ""  for index, letter in enumerate(text):  if index % n == 0:  builtstring = builtstring   letter  return builtstring print(GetNthLetters(text, 7))  

Так что теперь мой код успешно печатает каждый седьмой срок строку, например, в строке text = 'monosodium glutamate' каждый 7-й термин в строке, mit. но я хочу, чтобы мой код, распечатать каждый 6-й, каждый 5-й и так далее до 1-го персонажа и оденьте персонажей в порядке от каждого n-го символа до 1-го персонажа.

Итак, в принципе, что я хочу попробовать сделать, так это убедиться, что входные данные

 text = 'monosodium glutamate', n = 7   

результат должен быть

 'mitouanmmo asgtoledu'  

потому что он печатает каждый 7-й символ строки, а затем каждый шестой символ, а затем каждый 5-й и так далее. Какие изменения в мой код мне нужно внести?

Ответ №1:

Самое простое-просто использовать срезы с расположенными в шахматном порядке начальными индексами и шагом n . А потом str.join их вместе:

 def GetNthLetters(text, n: int):  return "".join(text[i::n] for i in range(n))  GetNthLetters("monosodium glutamate", 7) # 'mitouanmmo asgtoledu'  

Если вы хотите добиться этого «вручную»:

 def GetNthLetters(text, n: int):  builtstring = ""  for i in range(n): # starting points: 0123456  while i lt; len(text): # 0,7,14 -gt; 1,8,15 -gt; 2,9,16 ...  builtstring  = text[i]   i  = n  return builtstring  

Комментарии:

1. Я добавил такой подход с голыми костями.