如果我要创建一个“翻译器”,并且为每个字母分配一个世界(例如cat = a,dog = b ...),我是否可以制作2个数组,其中每个字母的“翻译”例如,第一个数组对应于字母本身在另一个数组中具有相同位置的元素
array_1 = ["a", "b"]
array_2 = ["cat", "dog"]
def translation(phrase):
translation = ""
for letter in phrase:
if letter in array_1:
translation += #the element of array_2 in the same position of the element of array_1 witch is equal to letter
return translation
print(translation(input()))
答案 0 :(得分:1)
您可以使用两个列表。但是,更好的解决方案是使用字典值。这样,您只需输入一个键(输入字),然后为其提供要转换的值。您可以使用:
dictionary = { 'a': 'cat', 'b' : 'dog'}
,并且可以轻松地以input : output
的形式添加更多翻译,以更轻松地查看每个输入所翻译的内容。然后翻译单词的方法是,对于每个输入,键入
dictionary[input]
,您将获得正确的输出。例如,在此示例中,dictionary['a']
将返回'cat'
。这样可以节省时间,计算每个键和输出在每个列表中的位置,以确保它们匹配。
要连续翻译多个字符,请使用以下命令:
dictionary = { 'a': 'cat', 'b' : 'dog'}
undecoded="abbabaa"
decoded=""
for i in undecoded:
decoded=decoded+dictionary[i]
print(decoded)
希望这会有所帮助! -西奥
编辑:如juanpa.arrivillaga所述,如果您已经有两个要转换成字典形式的列表,则可以使用dictionary=dict(zip(array_1, array_2))
答案 1 :(得分:1)
您可以使用list.index()
函数来找到正确的索引:
array_1 = ["a", "b"]
array_2 = ["cat", "dog"]
phrase = 'acba'
def translation(phrase):
for letter in phrase:
yield array_2[array_1.index(letter)] if letter in array_1 else None
for t in translation(phrase):
if t:
print(t)
else:
print('NOT FOUND')
打印:
cat
NOT FOUND
dog
cat
编辑:将短语连接到一个字符串,例如:
final_string = ''.join(t if t is not None else '' for t in translation(phrase))
print(final_string)
打印:
catdogcat
答案 2 :(得分:0)
只需做出如下命令即可:
d = {array_1[n] :array_2[n] for n in range(len(array_1))}