python - python中的字母位置

标签 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)

但是当我运行时:

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/

相关文章:

python - 在 Django 中使用数据库按日期排序

python - Python 函数 scipy.sparse.bmat 的 R 等价物是什么?

python - Django Rest 框架 URL 模式

python - 即使我迭代地改变初始猜测,scipy curve_fit 也不会收敛

python - 由于 PyGame 错误需要帮助

python - 如何保存这个文件?

python - 删除 Pandas 中的重复项,不包括一列

python - 使用Python自动处理dymola模拟结果

python - 如何检查 python 3 中的不平衡括号?

python - 无法导入模块 'app' : No module named 'app' in Aws Lambda using Chalice