Ваша линия:
position + 2
не меняет значение position
. Вы вычисляете position + 2
, а затем выбрасываете это значение, вы должны присвоить результат позиции, поэтому:
def expand(nums):
finalword = ''
position = 0
wordlength = len(nums)
keypoint = ''
while <b>position < wordlength</b>:
keypoint = nums[position] * int(nums[position + 1])
finalword = finalword + keypoint
keypoint = 0
<b>position = position + 2</b> # or more compact: position += 2
return finalword
связанную проверку следует заменить на <
, так как если позиция равна длине, у нас уже есть слишком большой индекс.
Много строк также не нужно, мы можем удалить много строк и сохранить:
def expand(nums):
finalword = ''
wordlength = len(nums)
<b>for position in range(0, len(nums), 2)</b>:
keypoint = nums[position] * int(nums[position + 1])
finalword += keypoint
return finalword
При этом вы можете улучшить вышесказанное, используя iter(..)
ator и zip
:
def expand(nums):
inums = iter(nums)
return ''.join(c * int(n) for c, n in zip(inums, inums))