python中的字母位置

Rob*_*ert 3 python

新手在这里...尝试编写一个函数,该函数接受一个字符串并将所有字符替换为其各自的字典值。这是我所拥有的:

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)
Run Code Online (Sandbox Code Playgroud)

但是当我运行时:

alphabet_position("The sunset sets at twelve o' clock.")
Run Code Online (Sandbox Code Playgroud)

我得到:

the sunset sets at twelve o' cloc11.
Run Code Online (Sandbox Code Playgroud)

这意味着它只更改字符串中的最后一个字符。有任何想法吗?非常感谢任何输入。

Jul*_*ien 5

按照您的逻辑,您需要创建一个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)
Run Code Online (Sandbox Code Playgroud)

正如凯文所建议的那样,您可以使用set. (因为他删除了他的评论,所以在这里添加他的评论:)for i in set(new_text):请注意,这可能仅对大输入有益......