Uit de cursus: Training over basisprincipes van Python

Oplossing: ASCII-kunst coderen - tutorial Python

Uit de cursus: Training over basisprincipes van Python

Oplossing: ASCII-kunst coderen

- [Instructeur] Hopelijk tovert deze uitdaging een glimlach op je gezicht en op je schermen. De encodeString-functie ziet er hier uit als veel code, tenzij je het misschien op een efficiëntere manier hebt gedaan of in ieder geval op een kortere manier dan ik. Het is echt niet zo lastig. Gewoon een beetje vervelend om alles bij te houden. En dit is waar het hebben van goed benoemde variabelen echt van pas komt om duidelijk te maken wat er aan de hand is. Dus hier hebben we de stringVal die wordt doorgegeven en we willen daar uiteindelijk doorheen lussen. Onderweg gaan we een paar dingen bijhouden. Dus de eerste is onze encodedList. Dit is wat er uiteindelijk terugkomt van de functie. Dan hebben we prevChar. Dit is zodat we weten wanneer de snaar is veranderd. Als het huidige teken niet overeenkomt met wat de vorigeChar is, weten we dat we iets moeten toevoegen aan de encodedList. En tot slot houden we de telling bij. Dit begint bij nul en het houdt gewoon bij hoeveel tekens we hebben doorlopen zonder nog enige verandering te zien. Dan lussen we door de snaar. Als de vorigeChar niet gelijk is aan het huidige personage, geweldig, we hebben een verandering gezien. Dit personage is dus anders dan het laatste dat we zagen. Merk ook op dat hier de prevChar begint als het eerste teken van de tekenreeks. We gaan dus nooit een verandering detecteren als we nog bij het eerste teken zijn. We moeten wachten tot ten minste het tweede teken om überhaupt een verandering te detecteren. Dus als er een verandering is, voegen we prevChar en de count toe aan onze encodedList. Stel de telling opnieuw in. Nu, in elke iteratie, stellen we prevChar gelijk aan karakter, verhogen we de telling, voegen we er één toe aan de telling en gaan we opnieuw door. Buiten onze lus hebben we het einde van de reeks bereikt, dus we moeten ervoor zorgen dat we de laatste paar tekens opnemen. Dus nu voegen we ook daar een nieuw tuple aan het einde toe. Ten slotte retourneren we de encodedList. Dus nu hebben we een encodeString-functie die een stringwaarde en run-lengte kan opnemen en coderen. Ten slotte moeten we onze decodeString laten functioneren. Gelukkig is deze veel eenvoudiger. Het enige wat we hoeven te doen is elk item in de encodedList te doorlopen, dat item te nemen, het te vermenigvuldigen met het aantal en het vervolgens toe te voegen aan onze string en dat terug te geven. Dus laten we het uitzoeken. Groot. We hebben onze smiley. Ik heb hier ook deze zeer eenvoudige testcase opgenomen, omdat het moeilijk kan zijn om te zien of er bugs zijn als de snaren erg groot zijn, zoals bij deze ASCII-kunstsmiley.

Inhoud