#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. Я добавил такой подход с голыми костями.