Előző - #27 Téglalap rajz | Tartalomjegyzék | Következő - #29 Piramisrajz
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