PPixelVeranda
Сценарии

Сценарии работы с кодом · Выбор изображения по порогу ширины

03
Вокруг ваших задач

Конкретная отправная точка

Выберите из 1–64 пар URL и ширины при ширине отображения 1–10000 и плотности от 1/4 до 8. Проверьте точный порог и запасной выбор самого большого варианта, отклоняя повтор ширины и неверные числа без загрузки URL.

01

Откройте контекст

Выберите папку проекта и обозначьте нужные файлы или поведение.

02

Опишите изменение

Укажите входные данные, ожидаемый результат и границы, которые нужно сохранить.

03

Изучите работу

Проверьте предлагаемые изменения и команды, прежде чем полагаться на результат.

04

Проверьте результат

Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.

Выбор изображения по порогу ширины

Конкретная отправная точка
import math

def image_candidate(candidates, width, ratio):
    if type(width) is not int or not 1 <= width <= 10000 or type(ratio) not in (int, float) or not 0.25 <= ratio <= 8 or not math.isfinite(ratio):
        raise ValueError("image.viewport")
    if type(candidates) is not list or not 1 <= len(candidates) <= 64:
        raise ValueError("image.candidates")
    sizes, seen = [], set()
    for pair in candidates:
        if type(pair) not in (list, tuple) or len(pair) != 2:
            raise ValueError("image.pair")
        url, pixels = pair
        if type(url) is not str or not 1 <= len(url) <= 2048 or any(ord(c) < 32 or ord(c) == 127 for c in url):
            raise ValueError("image.url")
        if type(pixels) is not int or not 1 <= pixels <= 100000 or pixels in seen:
            raise ValueError("image.size")
        seen.add(pixels)
        sizes.append((pixels, url))
    sizes.sort()
    target = width*ratio
    return next((url for pixels, url in sizes if pixels >= target), sizes[-1][1])

Пример — отправная точка для реального проекта, а не утверждение, что сгенерированный код уже протестирован. Адаптируйте пути, зависимости и ожидаемое поведение к своему приложению.

Рабочая среда с ИИ для кода

Здесь начинается ваше следующее изменение.

Скачать для Windows ↗