python - 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))
但是这段代码太大了,我们可以用不同的技术来做到这一点吗?
提前致谢
解决方案
您的代码中存在太多挑战。
做多个替换语句。对于这些步骤中的每一个,python 都会在内部创建一个新字符串。在 Python 中,字符串是不可变的。
如果条件太多。
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])
使用ord
andchr
检查它是大写还是小写字符。
>>> ord('a') # ord example
97
>>> ord('A')
65
>>> chr(97) # chr example
'a'
>>> chr(98)
'b'
推荐阅读
- amazon-ec2 - 如何与其他开发者共享私钥
- oracle - 尝试在 Oracle 中读取文件时出现无效的文件操作异常
- batch-file - 检查空/批处理脚本中的字符串只有空格
- openshift - 与仅 OpenShift 容器平台相比,RedHat Openshift Application Runtimes 的价值是多少?
- vue.js - 如何更新 vue-codemirror MergeView 中“origLeft”的值?
- angular - 共享模块导出
- python - 正则表达式仅用于具有固定长度且没有数字前后数字的正则表达式,并且没有使用 \b
- rust - 为什么编译器让我在一个盒子里借另一个借?
- elasticsearch - 弹性搜索使用范围查询查找字段中的差异
- angular-material - 如何阻止占位符在 Angular 8 mat select 中作为标签浮动