首页 > 解决方案 > python中的底层函数

问题描述

我想在python中制作自己的lower函数

就像我们使用:

>>“你好,世界!”.lower()

>>你好,世界!

我想做自己的lower函数

我试过这段代码:

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))

但是这段代码太大了,我们可以用不同的技术来做到这一点吗?

提前致谢

标签: pythonstringlowercase

解决方案


您的代码中存在太多挑战。

  1. 做多个替换语句。对于这些步骤中的每一个,python 都会在内部创建一个新字符串。在 Python 中,字符串是不可变的。

  2. 如果条件太多。

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])

使用ordandchr检查它是大写还是小写字符。

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

推荐阅读