翻译字符串时遇到问题

时间:2013-03-23 02:55:59

标签: python python-3.x

我决定在春假期间开始一个项目,从webcomic中获取字符并翻译文本,就好像那个角色说的那样。我已经设法让它适用于一个角色,但是有一个小问题。

def meulin():
    replace = {'EE':'33', 'ee':'33'}
    originalText = input('Input text -> ')
    while True:
        for i, j in replace.items():
            if i in originalText:
                newText = originalText.replace(i,j)
                print(newText.upper())
            else:
                print(originalText.upper())
        originalText = input('Input text (type "quit" to end program.) -> ')
        if originalText in ('quit', 'end', 'exit', 'stop', 'q'):
            sys.exit('Program ended.')

当我运行PyScripter的调试器时,它告诉我在获得输入后,程序从for i, j in replace.items():行开始,完全跳过if语句并转到else语句,然后转到if语句。所以不要只发布

  

CH33SE

它会发布

  

奶酪

     
    

CH33SE

  

我可以完全删除else语句,但它根本不会发布原始文本。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

for i, j in replace.items():
    if i in originalText:
        newText = originalText.replace(i,j)
        print(newText.upper())
        break
else:
    print(originalText.upper())

break语句表示循环将在第一次替换后停止。 Python允许在else循环上使用for子句,只有在循环未被break语句停止时才会执行。

您看到输出两次的原因是因为您的dict中有两个项目。我认为只有在没有替换匹配时才打印原始文本。