Я написал программу для оценки того, какие числа в определенном диапазоне делятся только на определенные числа (в диапазоне от 1
до 9
). Пока что код работает, но я протестировал шаги, которые он выполняет, в pythontutor http://www.pythontutor.com/visualize.html#mode=edit и что-то странное произошло.
Во втором цикле код не всегда проверяет все значения (k)
на его делимость, но иногда пропускает последнее значение (k)
.
Лучше привести пример:
Liste = []
for i in range (1500, 1700):
if i%5 == 0 and i%7 == 0:
Liste.append(i)
print (Liste)
Teiler = [2, 3, 4, 6, 8, 9]
for k in Liste:
z = 0
for w in range (len(Teiler)):
if k%Teiler[z] == 0:
Liste.remove(k)
z += 1
break
else:
z += 1
print (Liste)
Здесь вывод выглядит следующим образом:
[1505, 1540, 1575, 1610, 1645, 1680]
[1505, 1575, 1645]
И это вывод, который должен быть, как и во втором списке, это только числа, делимые на 5
и 7
. Также на pythontutor второй цикл for проходит все значения (k)
.
Но когда я изменяю диапазон числа следующим образом (строка 2, изменяю диапазон с 1700
на 1800
):
Liste = []
for i in range (1500, 1800):
if i%5 == 0 and i%7 == 0:
Liste.append(i)
print (Liste)
Teiler = [2, 3, 4, 6, 8, 9]
for k in Liste:
z = 0
for w in range (len(Teiler)):
if k%Teiler[z] == 0:
Liste.remove(k)
z += 1
break
else:
z += 1
print (Liste)
вывод выглядит следующим образом:
[1505, 1540, 1575, 1610, 1645, 1680, 1715, 1750, 1785]
[1505, 1575, 1645, 1715, 1785]
Если я запускаю этот код на pythontutor, код останавливается на k = 1750
и не проверяет k = 1785
.
Почему так себя ведет?
Это проблема с проверкой на pythontutor?
Или есть проблема с моим кодом?
Я хочу понять, почему Python делает то, что делает.
Большое спасибо за вашу помощь. Мне жаль, если это вопрос нуба или я упускаю что-то очевидное.