Добро пожаловать в StackOverflow!
Моя идея состоит в том, чтобы повторять каждый x один за другим до 160, и если затем уравнение! = 1760, я увеличиваю y на 1 и перезапускаю.
Проблема в том, что вы не пишете вложенный цикл for.Вложенный цикл for имеет вид:
for(...):
...
for(...):
Вместо этого вы увеличиваете y
, даже когда вы проходите через x
s в первый раз, поскольку у вас есть оператор if.Он "зависает" из-за 30*10+29*50 = 1750
, но как только вы снова запустите цикл, 31*10+30*50 = 1810
, который больше 1760, и поэтому оператор if оценивается как false, и y
никогда не увеличивается снова.Поэтому вместо этого вы захотите создать два цикла for, вложенных, как я продемонстрировал выше, и после завершения внутреннего цикла вы захотите увеличить y
на 1 (что и делает цикл for автоматически).
Редактировать из комментариев:
Ваш код будет выглядеть примерно так:
for y in range(0,161):
...
for x in range(0,161):
... #go through and check if the equations are satisfied
Обратите внимание, что приведенное выше эквивалентно:
x = 0
y = 0
while(y <= 160):
...
while(x <= 160):
... #go through and check if the equations are satisfied
x+=1 #add 1 to x
y+=1 #when the second loop is done iterating, add 1 to y and loop again
Если вы исследуете, что здесь происходит, когда y=0
, компьютер увидит внутренний цикл for и начнёт проходить через каждое число для x
в диапазоне от 0 до 160, а затем после этой точки, если совпадение не найдено,цикл снова запустится (и поскольку это цикл for, а не цикл while, увеличение y
на 1 уже происходит автоматически).