написать код! Нужно дополнить код по условиям задания Дано: Изображение, на котором показан фрагмент звездного неба с круглой или эллиптической (овальной) черной областью. Если это эллипс, то гарантируется, что его длинная ось расположена горизонтально (то есть эллипс не будет повернут). На приведенном выше изображении черный звездолет обрисован светлым контуром, но это только для наглядности, на загруженном для обработки изображении такого контура не будет. Пиксели, затененные звездолетом, имеют идеально черный цвет (значение 0).
Требуется: найти и вывести видимый диаметр звездолета, то есть максимальную ширину непрерывной черной области, в пикселях.
Как отлаживать: закомментируй строку с "url=input()", а вместо нее раскомментируй следующую строку. Также можно раскомментировать строку с print(wa,ha). После этого шаблон программы должен выполняться без ошибок, выводя на консоль "200 200" (размер картинки) и "0" (вместо правильного ответа). Дальше дописываешь, что нужно, и добиваешься правильного ответа. Когда все работает, переносишь готовую программу обратно в Степик, только не забудь снова закомментировать/раскомментировать нужные строки!
Подсказки и пояснения:
Картинка уже загружена в переменную photo (это объект Image из библиотеки PIL, если интересно, документацию можно легко найти в интернете).
Картинка уже преобразована в формат greyscale (градации серого), каждая точка изображения представлена числом от 0 (черная точка) до 255 (белая).
Чтобы получить яркость точки по координатам (x,y), используется вызов photo.getpixel((x,y)). Двойные скобки означают, что x и y объединены в кортеж (x,y), передаваемый в getpixel() как один параметр.
Чтобы найти максимум чего-либо, берем переменную ("текущий максимум"), назначаем ей заведомо маленькое значение. Затем в цикле каждый раз сравниваем с текущим максимумом очередное значение, и если оно больше, то заменяем текущий максимум на это значение.
Чтобы найти длину непрерывной последовательности заданных значений (например, черных точек в строке), берем переменную ("счетчик") с начальным нулевым значением и начинаем просматривать наш массив (строку изображения и т.п.). Каждый раз, когда попадается заданное значение, счетчик увеличивается на 1. Каждый раз, когда попадается любое другое значение, мы запоминаем счетчик как длину последовательности (и, если надо, используем для обновления текущего максимума), после чего его снова обнуляем (поскольку последовательность уже кончилась).
КОД:
# Это загрузка картинки, здесь ничего трогать не надо!
from PIL import Image
import requests
url = input() # для отладки замените на:
# url = "https://stepik.org/media/attachments/lesson/578362/stars1h.png"
loaded_image=Image.open(requests.get(url, stream=True).raw) #загружаем картинку
photo=loaded_image.convert(mode="L") # переводим в greyscale (тона серого)
wa, ha = photo.size # это размеры картинки (ширина и высота, соотв.)
#print(wa,ha) # раскомментируй для отладки - должен выдавать "200, 200"
# Дальше идет ваш код!
alien_ship_width = 0 # здесь должен оказаться результат
# здесь пишем, что еще требуется перед обработкой всей картинки
# ...
for y in range(ha): # цикл просмотра по строкам
# здесь пишем, что требуется перед просмотром очередной строки
# ...
for x in range(wa): # цикл просмотра точек очередной строки
pix = photo.getpixel((x,y)) # взяли точку...
# и вот тут что-то с ней делаем!
# ...
# здесь пишем, что требуется после просмотра очередной строки
# ...
print(alien_ship_width) # выводим полученный результат