Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的Lower函数_Python_String_Lowercase - Fatal编程技术网

python中的Lower函数

python中的Lower函数,python,string,lowercase,Python,String,Lowercase,我想用python编写自己的低级函数 就像我们使用的: >“你好,世界!”。lower() >你好,世界 我想做我自己的低级功能 我尝试了以下代码: String = "Hello, World!" def lowerFunction(MyStr): if "A" in MyStr: MyStr = MyStr.replace("A",'a') if "B" in MyStr:

我想用python编写自己的低级函数

就像我们使用的:

>“你好,世界!”。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))
但是这个代码太大了,我们可以用不同的技术来实现吗?


提前感谢

您的代码中有太多的挑战

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

  • 如果条件允许,太多了

  • def\u下限功能(字符):
    
    如果65您可以使用ascii替换字符

    stri = "Hello, World!"
    lower_stri = ''.join([chr(ord(i)+32) if ord(i) >= 65 and ord(i) <= 90 else i for i in stri ])
    
    stri=“你好,世界!”
    如果ord(i)>=65和ord(i)这个代码可能会帮助你

    def lowerFunction(MyStr):
        MyStr=list(MyStr)
        for i in range(len(MyStr)):
            v=ord(MyStr[i])
            if v>=65 and v<=90:
                MyStr[i]=chr(v+32)
        MyStr=''.join(MyStr)
    
        return MyStr
    
    val=lowerFunction('Hello, World!')
    print(val)
    
    def lowerFunction(MyStr):
    MyStr=列表(MyStr)
    对于范围内的i(len(MyStr)):
    v=ord(MyStr[i])
    
    如果v>=65且vPython具有翻译字符的特殊函数-
    str.translate()

    它需要
    str.maketrans('ABC','ABC')
    来创建查找表

    但是您不必手动编写
    ABC…Z
    ABC…Z
    ,因为变量
    string.ascii\u大写
    string.ascii\u小写

    import string
    
    def lower(text):
        lookup = str.maketrans(string.ascii_uppercase, string.ascii_lowercase)
        return text.translate(lookup)
    
    text = lower("Hello, World!")
    
    print(text)
    
    结果

    'hello, world!'
    
    'Uryyb, Jbeyq!'
    
    当然,与其他解决方案一样,这只适用于ASCII

    对于Unicode,它需要
    maketrans()中的所有字符


    顺便说一句:使用此密码,您可以使用

    结果

    'hello, world!'
    
    'Uryyb, Jbeyq!'
    

    还有一个解决方案使用小写和大写字母列表。速度更快,因此您应该使用它,但此解决方案更接近原始解决方案

    def lower_函数(我的_字符串):
    对于小写、大写邮政编码(string.ascii_小写,string.ascii_大写):
    my_string=my_string.replace(上、下)
    返回我的字符串
    
    zip
    创建如下大小写对:

    list(zip('abc','abc'))
    等于
    [('a','a'),('b','b'),('c','c')]
    。如果没有
    list
    ,它将创建一个迭代器,这对于for循环来说很好

    与目前的其他解决方案一样,它只适用于ASCII字符,而小写方法也适用于其他字符。这将导致所有小写字母:

    “CSÖN CSÖN gyűrŰArany gyŰrŰ”。lower()给出“CSöN CSöN gyűrűArany gyűrű”
    
    但是您可以在
    zip
    部分使用更长的字符列表,如

    zip(string.asciiőu小写字母+字母'uaèíóóöőœuűä',string.asciiŐu大写字母+字母'
    

    但也可能存在一些其他问题,例如。

    作为一个微小的优化,您可以删除
    if
    s
    s
    replace
    替换所有出现的情况是什么意思?如果没有出现,它很简单,什么也不做。因此,您可以在不事先检查
    if
    的情况下执行
    replace
    se、 只需删除行并取消对其余行的插入就可以了。像这样
    MyStr.replace('A','A')
    ?提示:小写字母和大写字母的ASCII代码正好相差32(或0x20)。这很简单!这是一个智能解决方案,但必须注意它仅适用于ASCII。这是一个智能解决方案,但必须注意它仅适用于ASCII。是否应该这样调用:text=
    rot13(…)
    ?请更正它。@DanielHao正确点-更正