任务是:
您的任务是纠正数字化文本中的错误。您只需处理以下错误:
我的代码:
def correct(string):
for i in string:
if '5' in string:
string = string.replace('5','S')
elif '0' in string:
string = string.replace('0','O')
elif '1' in string:
string = string.replace('1','I')
return string 我知道这个解决方案不适用于这样的词:
Test.assert_equals(correct("51NGAP0RE"),"SINGAPORE");有没有人有关于如何使这成为一个更通用的功能,将工作的每一个字的技巧?
发布于 2018-04-13 15:51:26
不要使用elif,因为它只在上一次测试失败时进行测试。将它们全部更改为普通if,代码将正确工作。
但正如评论中提到的,没有必要进行任何测试。如果字母不在字符串中,replace()将只返回原始字符串,因此不会有任何伤害。
string = string.replace('5', 'S').replace('0', 'O').replace('1', 'I')发布于 2018-04-13 15:51:25
您可以直接使用str.replace。
def correct(string):
return string.replace('5','S').replace('0','O').replace('1','I')发布于 2018-04-13 15:53:11
你为什么不利用str.maketrans和str.translate
>>> "51NGAP0RE".translate(str.maketrans('501', 'SOI'))
'SINGAPORE'包装在一个函数中:
def correct(s):
return s.translate(str.maketrans('501', 'SOI'))https://stackoverflow.com/questions/49820806
复制相似问题