python中的Lower函数
我想用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:
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))
但是这个代码太大了,我们可以用不同的技术来实现吗?
提前感谢您的代码中有太多的挑战
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
ssreplace
替换所有出现的情况是什么意思?如果没有出现,它很简单,什么也不做。因此,您可以在不事先检查if
的情况下执行replace
se、 只需删除行并取消对其余行的插入就可以了。像这样MyStr.replace('A','A')
?提示:小写字母和大写字母的ASCII代码正好相差32(或0x20)。这很简单!这是一个智能解决方案,但必须注意它仅适用于ASCII。这是一个智能解决方案,但必须注意它仅适用于ASCII。是否应该这样调用:text=rot13(…)
?请更正它。@DanielHao正确点-更正