MENÜ

Honlap címe

Előző - #33 Vesszővel formázott számok | Tartalomjegyzék | Következő - #35 Címes tok

34. GYAKORLAT: NAGYBETŰK

getUppercase('Hello')  →  'HELLO'

A Python „elemeket tartalmazó” nyelvként ismert, mivel szabványos könyvtára számos hasznos funkciót és modult tartalmaz. Az egyik ilyen a upper()string metódus, amely a karakterlánc nagybetűs változatát adja vissza: 'Hello'.upper() kiértékeli a -ra 'HELLO'. Ebben a gyakorlatban azonban létre kell hoznia ennek a módszernek a saját megvalósítását.

Gyakorlat leírása

Írjon getUppercase()függvényt egy textkarakterlánc paraméterrel. A függvény olyan karakterláncot ad vissza, amelyben az összes kisbetűt textnagybetűvé alakítja át. A nem betű karakterek textváltozatlanok maradnak. Például a getUppercase() visszaadást okozza 'Hello', de a "GOODBYE 123!" .'HELLO''goodbye 123!'

Ezek a Python- assertutasítások leállítják a programot, ha feltételük False. Másolja őket a megoldási program aljára. Az Ön megoldása akkor helyes, ha a következő assertállítások feltételei mind igazak :

assert getUppercase('Hello') == 'HELLO'

assert getUppercase('hello') == 'HELLO'

assert getUppercase('HELLO') == 'HELLO'

assert getUppercase('Hello, world!') == 'HELLO, VILÁG!'

assert getUppercase('goodbye 123!') == 'VISSZA 123!'

assert getUppercase('12345') == '12345'

assert getUppercase('') ​​== ''

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étel fogalmak: forciklusok, operátorban , karakterlánc-összefűzés, indexek

Megoldás tervezése

A getUppercase()függvénynek egy új, üres karakterlánccal kell kezdődnie, amely csak nem kisbetűket tartalmaz. Ezután egy ciklus segítségével végighaladhatunk a text paraméterben szereplő egyes karaktereken, és átmásolhatjuk a karaktereket ebbe az új karakterláncba. Ha a karakter kisbetű, másolhatjuk a betű nagybetűs változatát. Ellenkező esetben egy nem kisbetűs karakter másolható az új karakterláncba, ahogy van. A ciklus befejezése után getUppercase()az újonnan felépített nagybetűs karakterláncot adja vissza.

A betűk nagybetűs változatának beszerzéséhez egy szótár szükséges, amely a kisbetűket nagybetűkre képezi le. Ha a szövegparaméterben szereplő karakter kulcsként szerepel a szótárban, tudjuk, hogy az egy betű, és a szótár tartalmazza a megfelelő nagybetűs változatot. Ez a nagybetű a visszaadott karakterlánc végéhez kapcsolódik. Ellenkező esetben az eredeti karakter texta visszaadott karakterlánchoz fűződik.

Különleges esetek és Gotchák

A getUppercase()függvénynek egyformán jól kell működnie, függetlenül attól, hogy a textparaméter kisbetűs vagy már nagybetűs. Ezenkívül a funkció nem befolyásolja a nem betű karaktereket getUppercase().

Vegye figyelembe, hogy a kisbetűket nagybetűkre leképező szótár használata azt jelenti, hogy programunk csak az angol ábécé 26 alapbetűjével működik. Ezért nem tudja az ékezetes betűket nagybetűssé alakítani, mint például 'ñ'a 'Ñ', ahogy a Python upper()karakterlánc-metódusa képes. Minden ékezetes betűt hozzá kell adnia a szótárhoz, ha azt szeretné, hogy nagybetűs legyen.

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/uppercase-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:

# A kisbetűket leképezheti nagybetűkre.

LOWER_TO_UPPER = {'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D', 'e': 'E', 'f': 'F' , 'g': 'G', 'h': 'H', 'i': 'I', 'j': 'J', 'k': 'K', 'l': 'L', ' m': 'M', 'n': 'N', 'o': 'O', 'p': 'P', 'q': 'Q', 'r': 'R', 's' : 'S', 't': 'T', 'u': 'U', 'v': 'V', 'w': 'W', 'x': 'X', 'y':' Y', 'z': 'Z'}

 

def getUppercase(szöveg):

    # Hozzon létre egy új változót, amely üres karakterláncként kezdődik és lesz

    # tartsa a szöveg nagybetűjét:

    nagybetűs szöveg = ''

    # Ismételje meg az összes karaktert a szövegben, és adjon hozzá nem kisbetűket

    # karakter az új karakterláncunkhoz:

    a ____ karakteréhez:

        ha karakter a ____-ban:

            # Hozzáfűzi a nagybetűs formát az új karakterlánchoz:

            nagybetűs szöveg += ____[____]

        más:

            nagybetűs szöveg += ____

 

    # A nagybetűs karakterlánc visszaadása:

    Visszatérés ____

The complete solution for this exercise is given in Appendix A and https://invpy.com/uppercase.py. You can view each step of this program as it runs under a debugger at https://invpy.com/uppercase-debug/.

Prev - #33 Comma-Formatted Numbers | Table of Contents | Next - #35 Title Case

 

Asztali nézet