Как я могу убедиться, что элементы в b не опускаются ниже 0 или выше 10?
Т.е. когда 5 уменьшается до 0 в списке b, как я могу заставить программу увеличить ее до 1, а затем сделать приращения 1?
a = [2, 5, 7]
b = []
m = True
counter = 1
while m == True:
for i in a:
if i >= 5:
i -= counter
b.append(i)
else:
i += counter
b.append(i)
if len(a) == len(b):
counter += 1
print(b)
b.clear()
if counter == 15:
m = False
"""
Current output:
[2, 5, 7]
[3, 4, 6]
[4, 3, 5]
[5, 2, 4]
[6, 1, 3]
[7, 0, 2]
[8, -1, 1]
[9, -2, 0]
[10, -3, -1]
[11, -4, -2]
Expected output:
[2, 5, 7]
[3, 4, 6]
[4, 3, 5]
[5, 2, 4]
[6, 1, 3]
[7, 0, 2]
[8, 1, 1]
[9, 2, 0]
[10, 3, 1]
[9, 4, 2]
"""
Не уверен, что я полностью слежу за тем, что вам нужно, но ниже приведен подход к получению ожидаемого результата (я не следовал тому, что вы пытались сделать с циклом while, поэтому я просто зацикливал это 15 раз на основе вашего максимального счетчика value - но вы можете сделать что-то еще с этим внешним циклом).
numbers = [2, 5, 7]
switches = [True, False, False]
output = list()
for _ in range(15):
for i, number in enumerate(numbers):
# keep numbers between 0 and 10
if number == 0:
switches[i] = True
elif number == 10:
switches[i] = False
# increment or decrement number based on corresponding "switch"
if switches[i]:
number+=1
output.append(number)
else:
number-=1
output.append(number)
# print and reset
if len(output) == len(numbers):
numbers = output
output = list()
print(numbers)
# OUTPUT
# [3, 4, 6]
# [4, 3, 5]
# [5, 2, 4]
# [6, 1, 3]
# [7, 0, 2]
# [8, 1, 1]
# [9, 2, 0]
# [10, 3, 1]
# [9, 4, 2]
# [8, 5, 3]
# [7, 6, 4]
# [6, 7, 5]
# [5, 8, 6]
# [4, 9, 7]
# [3, 10, 8]
if
чтобы проверитьi
; если он достигает 0, сбросьтеcounter
на 1 и немедленно увеличьте. Где вы застряли при написании этого кода? Что вы пробовали?