У меня возникают проблемы с избавлением от None на выходе. Я пытался присвоить переменные, но все равно ничего не вышло. Любая помощь высоко ценится.

P.S - Выполнение должно быть print (rect1.get_picture ()). Это не может быть просто rect1.getpicture (). Это часть требования

class Rectangle:
    def __init__(self,width,height):
       self.width = width
       self.height=height

    def get_picture(self):
        def draw():
            for j in range(self.height):
                for i in range(self.width):
                    print("*", end="")
                print()

        if self.height>50 or self.width>50:
            return ("Too big for picture")

        else:
            return draw()
rect1 =Rectangle(width=5,height=5)
print(rect1.get_picture())
-1
andrew_gomez 21 Авг 2020 в 12:20

2 ответа

Лучший ответ

Ваша функция draw должна возвращать строку, а не печатать ее. Учтите, что вы всегда можете распечатать результат.

def draw():
    for j in range(self.height):
        for i in range(self.width):
            print("*", end="")
        print()

Изменения в

def draw():
    rectangle = ""
    for j in range(self.height):
        for i in range(self.width):
            rectangle += "*"
        rectangle += "\n"
    return rectangle

Я сохранил ваши два цикла, чтобы вы легко видели изменения, но, как кто-то сказал в комментариях, вместо этого можно использовать умножение.

0
Guimoute 21 Авг 2020 в 09:31

Как указано в комментариях, вам нужно заставить функцию draw действительно возвращать то, что вы можете распечатать.

Например:

class Rectangle:
    def __init__(self, width, height):
       self.width = width
       self.height= height

    def get_picture(self):
        def draw():
            return "\n".join("*"*self.width for _ in range(self.height))

        if self.height > 50 or self.width > 50:
            return ("Too big for picture")
        else:
            return draw()

rect1 = Rectangle(width=7, height=5)
print(rect1.get_picture())

Производит

*******
*******
*******
*******
*******

Чтобы сделать вещи немного более объектно ориентированными, я бы позволил Rectangle печатать сам, соблюдая протокол печати Python

class Rectangle:
    def __init__(self,width,height):
       self.width = width
       self.height= height

    def __str__(self):
        if self.height > 50 or self.width > 50:
            return ("Picture too big for printing")
        return "\n".join("*"*self.width for _ in range(self.height))

rect1 =Rectangle(width=7, height=5)
print(rect1)
1
Pynchia 21 Авг 2020 в 09:37