Вы печатаете весь словарь list_numbers
на каждом проходе цикла вместо того, чтобы печатать только новые значения. Это, вероятно, займет некоторое время, если словарь станет большим.
Вместо этого вы можете просто распечатать добавляемые новые значения:
for x in range(y,n):
new_values = {a*x: b*x}
list_numbers.update(new_values)
print(new_values)
Или, в качестве альтернативы, дождаться окончания цикла и распечататьвсе это:
for x in range(y,n):
list_numbers.update({a*x: b*x})
print(list_numbers)
Если вы сделаете последнее, ваш код может быть упрощен:
while True:
a = int(input(' Enter 1st number for ratio calculation: '))
b = int(input(' Enter 2nd number for ratio calculation: '))
y = int(input(' Enter y start range: '))
n = int(input(' Enter n end range: '))
list_numbers = {a*x: b*x for x in range(y,n)}
print(list_numbers)
Это только улучшение, которое я вижу здесь для более эффективной печати, я на самом деле нене знаю, что вы имеете в виду под проблемой деления (и кажется, что это вопрос совершенно другого вопроса)