这里的新手...尝试编写一个函数,该函数接受一个字符串并将所有字符替换为它们各自的字典值。 这是我所拥有的:
def alphabet_position(text):
dict = {'a':'1','b':'2','c':'3','d':'4','e':'5','f':'6','g':'7','h':'8':'i':'9','j':'10','k':'11','l':'12','m':'13','n':'14','o':'15','p':'16','q':'17','r':'18','s':'19','t':'20','u':'21','v':'22','w':'23','x':'24','y':'25','z':'26'}
text = text.lower()
for i in text:
if i in dict:
new_text = text.replace(i, dict[i])
print (new_text)
但是当我运行时:
alphabet_position("The sunset sets at twelve o' clock.")
我明白了:
the sunset sets at twelve o' cloc11.
意味着它只改变字符串中的最后一个字符。有任何想法吗?非常感谢任何输入。
最佳答案
按照您的逻辑,您需要创建一个 new_text
字符串,然后迭代地替换它的字母。使用您的代码,您一次只替换一个字母,然后从头开始使用您的原始字符串:
def alphabet_position(text):
dict = {'a':'1','b':'2','c':'3','d':'4','e':'5','f':'6','g':'7','h':'8','i':'9','j':'10','k':'11','l':'12','m':'13','n':'14','o':'15','p':'16','q':'17','r':'18','s':'19','t':'20','u':'21','v':'22','w':'23','x':'24','y':'25','z':'26'}
new_text = text.lower()
for i in new_text:
if i in dict:
new_text = new_text.replace(i, dict[i])
print (new_text)
正如 Kevin 所建议的,您可以使用 set
进行一些优化。 (在他删除后在此处添加他的评论:for i in set(new_text):
)请注意,这可能仅对大型输入有益...
关于python - python中的字母位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53661833/