Search code examples
pythonstringlowercase

Lower function in python


I want to make my own lower function in python

Just like we use:

>>"Hello, World!".lower()

>>hello, world!

I want to make my own lower function

I tried this code:

String = "Hello, World!"

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


print(lowerFunction(String))

But this code is too big, can we do this with a different technique?

Thanks in advance


Solution

  • There are too many challenges in your code.

    1. Doing multiple replace statement. For each of those steps, python internally creates a new string. In Python, strings are immutable.

    2. Too many if conditions.

    def _lowerFunction(char):
        if 65 <= ord(char) <= 90:
            return chr(ord(char) + 32)
        return char
    
    
    def lowerFunction(myStr):
        return ''.join([_lowerFunction(char) for char in myStr])
    
    

    Use ord and chr to check if its is Upper Case or Lower Case charecter.

    >>> ord('a') # ord example
    97
    >>> ord('A')
    65
    >>> chr(97) # chr example
    'a'
    >>> chr(98)
    'b'