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