我对python(3.5.2)比较陌生,而且我很乐意帮助我完成列表中的任务。字符串。 我需要编写一个代码来代替:e和E代表3,a和A代表4,i和I代表1,o和O代表任何给定字符串。这是我的尝试:
s = input("Enter a string: ")
leet = {'a':'4','e':'3','i':'1','o':'0','A':'4','E':'3','I':'1','O':'0'}
for character in s:
if character == leet.keys():
str.replace(leet.keys(),leet.values())
print(s)
这段代码对我来说不会产生任何令人满意的结果,我想知道我是否可以使用str.replace方法或者有更简单的方法吗? 谢谢!
答案 0 :(得分:3)
你可以使用str.join
转换为字符串的生成器理解在一行中执行此操作(如果在字典中找不到,则使用dict.get
默认为输入字符):
s = "a string Entered"
leet = {'a':'4','e':'3','i':'1','o':'0','A':'4','E':'3','I':'1','O':'0'}
crypted = "".join(leet.get(k,k) for k in s)
print(crypted)
结果:
4 str1ng 3nt3r3d
答案 1 :(得分:0)
replace()
方法很好。但是你错了。请记住,leet.keys()
将返回字典中所有键的列表。所以我建议:
s = input("Enter a string: ")
leet = {'a': '4', 'e': '3', 'i': '1', 'o': '0', 'A': '4', 'E': '3', 'I': '1', 'O': '0'}
for k, v in leet.items(): #iterating through dictionary (not string)
s = s.replace(k, v)
print(s)