MENÜ

Honlap címe

Előző - #27 Téglalap rajz | Tartalomjegyzék | Következő - #29 Piramisrajz

28. GYAKORLAT: HATÁRRAJZ

drawBorder(16, 4)  →  +--------------+
                                  |                   |
                                  |                   |
                                 +--------------+

A tömör, kitöltött ASCII art téglalapokhoz hasonlóan a 27. gyakorlatban (Téglalap rajzolás) generált kódunk ez a gyakorlat csak a téglalap határát rajzolja meg. A +plusz karakter a sarkokhoz, a -kötőjel karakter a vízszintes vonalakhoz, a |cső karakter pedig a függőleges vonalakhoz használatos. (Ez hasonló stílus, mint a 25. gyakorlat szorzótáblájának sorai.

Gyakorlat leírása

Írjon függvényt és drawBorder()paraméterekkel . A függvény egy téglalap határát rajzolja meg a megadott egész méretekkel. Nincsenek Python- utasítások a program helyességének ellenőrzésére. Ehelyett saját maga is szemrevételezheti a kimenetet. Például a hívás a következőt adná ki:widthheightassertdrawBorder(16, 4)

+--------------+

|                    |

|                    |

+--------------+

A téglalap belseje nyomtatási helyet igényel. A megadott méretek tartalmazzák a sarkokhoz szükséges helyet. Ha a width vagy heightparaméter kisebb, mint 2 , akkor a függvény nem nyomtat semmit.

Próbáljon megoldást írni a leírásban szereplő információk alapján. Ha továbbra is problémái vannak ennek a gyakorlatnak a megoldásával, további tippekért olvassa el a Megoldástervezés és a Különleges esetek és Gotchák című részt.

Előfeltételek: Logikai operátorok, karakterláncok, karakterlánc-összefűzés, karakterlánc-replikáció, forciklusok, range()

 

 

Megoldás tervezése

A drawBorder() függvényhez három különálló rész szükséges : a felső határvonal, a középső és az alsó határvonal megrajzolása. A felső és az alsó szegélyvonal rajzolásának kódja azonos lesz. Tehát valójában csak két részt kell kódolnod ebben a függvényben.

A felső vízszintes vonal megrajzolása során létre kell hozni egy karakterláncot egy +plusz karakterrel a bal oldalon, amelyet több -mínusz karakter követ, majd a jobb oldalon egy további + plusz karaktert. A szükséges - mínusz karakterek száma width - 2, mivel a sarkokhoz tartozó két +plusz karakter két szélességi egységnek számít.

Hasonlóképpen a középső sorok rajzolásához | cső karakter, majd néhány szóköz, majd még egy | cső karakter. A helyek száma is width - 2. Ezt a kódot egy hurokba is kell helyeznie for, és a sorokból annyit kell húznia, mint height - 2.

Végül az alsó vízszintes vonal megrajzolása megegyezik a felső megrajzolásával. Kimásolhatja és beillesztheti a kódot.

A karakterlánc-replikáció könnyen létrehozhatja a - mínusz és szóköz karakterláncokat. A Pythonban használhatja a * operátort egy karakterlánccal és egy egész számmal, hogy kiértékeljen egy hosszabb karakterláncot. Például írja be a következőket az interaktív héjba:

>>> "Helló" * 3

'Helló helló helló'

>>> '-' * 16

'----------------'

>>> szélesség = 10

>>> (szélesség - 2) * '-'

'--------'

Különleges esetek és Gotchák

Vegye figyelembe, hogy a szegély minimális szélessége és magassága 2 . A hívás során drawBorder(2, 2) a következőt kell kinyomtatnia a képernyőre:

++

++

Ha a widthvagy a magasság argumentum kisebb, mint 2, a függvény nem nyomtat semmit.

Most próbáljon meg egy megoldást írni az előző szakaszok információi alapján. Ha továbbra is problémái vannak a gyakorlat megoldásával, olvassa el a Megoldássablon részt további tippekért.

Megoldás sablon

Próbáljon először megoldást írni a semmiből. De ha nehézségei vannak, akkor a következő részprogramot használhatja kiindulási helynek. Másolja ki a következő kódot a https://invpy.com/borderdrawing-template.py webhelyről , és illessze be a kódszerkesztőbe. Cserélje ki az aláhúzást kódra, hogy működő programot készítsen:

def drawBorder(szélesség, magasság):

    # Különleges eset: Ha a szélesség vagy magasság kisebb, mint kettő, ne rajzoljon semmit:

    ha szélesség < ____ vagy magasság < ____:

        Visszatérés

 

    # A felső sor nyomtatása:

    print('+' + ('-' * (szélesség - ____)) + ____)

 

    # Hurok minden sorhoz (a felső és az alsó kivételével):

    i tartományban (magasság - 2):

        # Nyomtasd ki az oldalakat:

        nyomtatás (____ + (____ * (szélesség - 2)) + ____)

 

    # Nyomtassa ki az alsó sort:

    nyomtatás(___________________________________)

A gyakorlat teljes megoldását az A függelék és a https://invpy.com/borderdrawing.py tartalmazza . A program minden lépését megtekintheti, amint az egy hibakereső alatt fut a https://invpy.com/borderdrawing-debug/ oldalon .

Előző - #27 Téglalap rajz | Tartalomjegyzék | Következő - #29 Piramisrajz

 

Asztali nézet