еще одна не очень интуитивная реализация
def vScale(xmax):
return ((xmax-1)/250+1)*250
и вот результат
[(x,vScale(x)) for x in xrange(0,1200,50)]
[(0, 0), (50, 250), (100, 250), (150, 250), (200, 250), (250, 250), (300, 500), (350, 500), (400, 500), (450, 500), (500, 500), (550, 750), (600, 750), (650, 750), (700, 750), (750, 750), (800, 1000), (850, 1000), (900, 1000), (950, 1000), (1000, 1000), (1050, 1250), (1100, 1250), (1150, 1250)]
И еще одна реализация
limits=[0,250,500,750,1000]
ymax=limits[bisect.bisect_right(limits,xmax-1)]
Добавьте еще один букет
def vScale(xmax):
return [250,500,750,1000][(xmax-1)/250]