def tlower(str1):
list = list(str1)
final = ''
for char in range(0,len(str1)):
if list[char] in UPPERCASE:
for ascii in range(0,len(UPPERCASE)):
if list[char] == UPPERCASE[ascii]:
list[char] = LOWERCASE[ascii]
final += list[char]
return final
Run Code Online (Sandbox Code Playgroud)
注意 - UPPERCASE和LOWERCASE是所有大写/小写字母的字符串
注意 - 不能使用python内置的任何字符串函数(替换等)
我有这个函数将任何字符串转换为全部小写,(是的,我知道有一个内置函数..)但是与我创建的其他字符串函数相比,这是相当长的,我应该采取更好的方法来做这样做?
UPPERCASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
LOWERCASE = "abcdefghijklmnopqrstuvwxyz"
def to_lower(s, trans=dict(zip(UPPERCASE, LOWERCASE))):
return ''.join(trans.get(ch,ch) for ch in s)
print to_lower('This Is a TEST') # => 'this is a test'
Run Code Online (Sandbox Code Playgroud)
编辑:
zip() 获取两个列表并返回值对,即
zip('ABC', 'abc') # => [('A','a'), ('B','b'), ('C','c')]
Run Code Online (Sandbox Code Playgroud)
dict() 制作字典 - 在这种情况下,
{'A':'a', 'B':'b', 'C':'c'}
Run Code Online (Sandbox Code Playgroud)
trans.get(x, y)是一种更紧凑的说法trans[x] if x in trans else y.在这种情况下,"如果您有这封信的小写版本,请将其退回,否则将其归还原始信件".
如果你不喜欢.join,那么减少怎么样?
from operator import add
def to_lower(s, trans=dict(zip(UPPERCASE, LOWERCASE))):
return reduce(add, (trans.get(ch,ch) for ch in s), '')
Run Code Online (Sandbox Code Playgroud)