Произошли некоторые логические ошибки в отношении индекса и фактических элементов списка.Я выделил измененные / добавленные строки комментарием #
.В основном вам нужно было заменить idx
на j
, потому что idx
был индексом, а j
был фактическим элементом.Если вы начнете с range(n)
, это не имеет значения, потому что индекс совпадает с j
.Но поскольку вы упомянули в своем вопросе, что вы хотите хранить числа от 1
до n
, вам нужно использовать range(1, n+1)
def BooHoo(n):
main_list = []
for x in range(1,n+1): # replaced range(n) to start from 1
main_list.append(x)
for idx, j in enumerate(main_list):
if not (j % 3) and not (j % 5): # replaced idx by j
main_list.pop(idx)
main_list.insert(idx, 'BooHoo')
elif not (j % 3): # replaced idx by j
main_list.pop(idx)
main_list.insert(idx, 'Boo')
elif not (j % 5): # replaced idx by j
main_list.pop(idx)
main_list.insert(idx, 'Hoo')
else:
continue
return main_list # Removed unnecessary second list
# Call the function
print (BooHoo(15))
Выход
[1, 2, 'Boo', 4, 'Hoo', 'Boo', 7, 8, 'Boo', 'Hoo', 11, 'Boo', 13, 14, 'BooHoo']