@Laplacedms

Как упростить мой код?

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

Для решения задачи, описанной выше написал следующий код:
from PIL import Image

a = input('1-r: ')
b = input('2-r: ')
f = '.jpg'
name = input('name: ')

img=range(int(a), int(b)+2)

if len(img) >= 1:
    image = Image.open(str(img[0])+f)
    w, h1 = image.size
    print(h1)
if len(img) >= 2:
    image = Image.open(str(img[1])+f)
    w, h2 = image.size
    print(h2)
if len(img) >= 3:
    image = Image.open(str(img[2])+f)
    w, h3 = image.size
    print(h3)
if len(img) >= 4:
    image = Image.open(str(img[3])+f)
    w, h4 = image.size
    print(h4)
if len(img) >= 5:
    image = Image.open(str(img[4])+f)
    w, h5 = image.size
    print(h5)
if len(img) >= 6:
    image = Image.open(str(img[5])+f)
    w, h6 = image.size
    print(h6)
    
if len(img) == 2:
    imgs = Image.new('RGB', (w, h1+h2+h3))
elif len(img) == 3:
    imgs = Image.new('RGB', (w, h1+h2+h3))
elif len(img) == 4:
    imgs = Image.new('RGB', (w, h1+h2+h3))
elif len(img) == 5:
    imgs = Image.new('RGB', (w, h1+h2+h3+h4))
elif len(img) == 6:
    imgs = Image.new('RGB', (w, h1+h2+h3+h4+h6))
else:
    print("Занова rgb!")
if len(img) >= 1:
    img1 = Image.open(str(img[0])+f)
if len(img) >= 2:
    img2 = Image.open(str(img[1])+f)
if len(img) >= 3:
    img3 = Image.open(str(img[2])+f)
if len(img) >= 4:
    img4 = Image.open(str(img[3])+f)
if len(img) >= 5:
    img5 = Image.open(str(img[4])+f)
if len(img) >= 6:
    img6 = Image.open(str(img[5])+f)
if len(img) >= 1:
    imgs.paste(img1, (0,0))
if len(img) >= 2:
    imgs.paste(img2, (0,h1))
if len(img) >= 3:
    imgs.paste(img3, (0,h1+h2))
if len(img) >= 4:
    imgs.paste(img4, (0,h1+h2+h3))
if len(img) >= 5:
    imgs.paste(img5, (0,h1+h2+h3+h4))
if len(img) >= 6:
    imgs.paste(img6, (0,h1+h2+h3+h4+h5))

imgs.show()
imgs.save("../result/"+name+".png")


Все работает но присутствует дефекты, но мне он не нравится - слишком много условий. Подскажите как сделать код более простым?

PS Я новичок в изучении Python.
PPS Спасибо
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Циклы. Помещай изображения и их высоты в отдельные списки, в конце итерируйся по этим спискам, чтобы собрать результат.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы