在Python 3中创建一个单词翻译器应用程序。任何 "最佳实践"?

问题描述 投票:0回答:1

我想写一段代码,把英语翻译成Chef(来自muppet show)的语言。

它应该把这些字母音改成另一种语言。

Input   Output
tion    shun
an  un
th  z
v   f
w   v
c   k
o   oo
i   ee

我必须写一个函数(def)来转换它,使它能打印新的语言。

print(eng2chef('this is a chicken'))

应回

zees ees a kheekken

到目前为止,我的代码是

help_dict = { 
    'tion': 'shun', 
    'an': 'un', 
    'th': 'z',
    'v': 'f', 
    'w': 'v', 
    'c': 'k', 
    'o': 'oo', 
    'i': 'ee', 
} 
def eng2chef(s):

  s.split()
  for i in s:
    if i in help_dict:
      i = help_dict[i]
      print(i)

eng2chef('this is a chicken')

但这只改变了某些字母,然后打印出这些字母。

ee
ee
k
ee
k

谁能帮帮我!

python python-3.x grok
1个回答
1
投票

你可以通过迭代替换字符串来实现。

help_dict = [
    ('tion', 'shun'),
    ('an', 'un'),
    ('th', 'z'),
    ('v', 'f'),
    ('w', 'v'),
    ('c', 'k'),
    ('o', 'oo'),
    ('i', 'ee')
]
def eng2chef(s):
     for x, y in help_dict:
         s = s.replace(x,y)
     return s

但请注意,我把你的dict改成了一个列表,所以替换顺序是强制的。这一点很关键,因为你不想把'w'替换成'v',然后再把'v'替换成'f',只能反过来。


0
投票
  • 首先,我是瑞典人,我有点被激怒了。 :-p
  • 第二,你需要一个else子句来告诉程序如果没有找到匹配项该怎么做。
  • 第三,为了你自己的理智,不要重复使用i变量。
  • 第四,任何一个瑞典厨师都会用肉丸而不是鸡肉。

..

help_dict = { 
    'tion': 'shun', 
    'an': 'un', 
    'th': 'z',
    'v': 'f', 
    'w': 'v', 
    'c': 'k', 
    'o': 'oo', 
    'i': 'ee', 
} 
def eng2chef(s):
  for i in s:
    if i in help_dict:
      j = help_dict[i]
      print(i,j)
    else:
      print(i,i)

eng2chef("this is a chicken")

...输出。

t t
h h
i ee
s s

i ee
s s

a a

c k
h h
i ee
c k
k k
e e
n n

正如你所看到的,这将垂直输出文本。如果要返回翻译后的字符串,你需要创建一个新的字符串来返回,例如通过连接。

另外,还有更多的 pythonic 方法来实现你想做的事情,但对于这个答案,我选择继续使用你已经选择的编码风格。


0
投票

你的代码将每个字符分割开来,使其只针对单个字母并改变它们。

help_dict = { 
    'tion': 'shun', 
    'an': 'un', 
    'th': 'z',
    'v': 'f', 
    'w': 'v', 
    'c': 'k', 
    'o': 'oo', 
    'i': 'ee', 
} 
def eng2chef(word):
    new_word = word
    for key in help_dict.keys():
        new_word = word.replace(key, help[key])
    print(new_word)
eng2chef('this is a chicken')

輸出:ZEES EES A KHEEKEN。

这针对的是传入输入中所有在字典中找到的词,用给定的值替换它们.希望对大家有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.