如何使用python脚本翻译单词



所以我们必须把数字从英语翻译成德语。我觉得我做错了,因为我没有当我测试代码时输出。

#!/usr/bin/env python3
import sys
english = sys.stdin.read().split()
num = {}
with open("translation.txt") as f:
data = f.read().split("n")
i = 0
while len(data[i]) < 0:
n = data[i].split()
n1 = n[0]
n2 = n[1]
if n1 not in num:
num[n1] = n2
i = i + 1
i = 0
while i < len(english):
n = english[i]
if n in num:
print(num[n])
i = i + 1

请帮忙。我甚至得到了打开文本文件的代码吗?文本文件包含从英语翻译成德语的数字

translation.txt 示例

one: eins
two: zwei
three: drei
four: vier
five: funf
six: sechs
seven: sieben
eight: acht
nine: neun
ten: zehn

好吧,您的代码有一些主要的逻辑错误。首先,对循环进行比较是错误的。您也拆分了行,但在关键帧中保留了:。也没有必要检查这个词是否已经存在,但我把它留在了你写的地方。我还添加了双面翻译,以防您需要。

以下是我的问题实现:

#!/usr/bin/env python3
import sys
english = sys.stdin.read().split()
num = {}
with open("translation.txt") as f:
data = f.read().split("n")
i = 0
while i < len(data):
n = data[i].split()
print(n)
n1 = n[0].replace(':', '')
n2 = n[1]
if n1 not in num and n2 not in num:
num[n1] = n2
num[n2] = n1
i = i + 1
print(num['one'])
print(num['eins'])

通过sys.stdin.read()从标准输入读取输入。这需要读取所有字符,直到满足EOF,只有在以下情况下才会发生:

  1. 通过键盘输入EOF(Ctrl-D用于基于Unix的系统,Ctrl-Z用于Windows(
  2. 输入从另一个以EOF结尾的流(如文件流(重定向

如果通过键盘逐行输入,则在看到EOF之前不会看到输出。如果希望在一行输入之后立即显示输出,则应使用input()而不是sys.stdin.read()

其他问题已经在@Raguel的回答中得到了解释。

这里我们有一个应用程序逻辑的主要问题,正如前面的回答中所提到的:

  • 首先,我们需要加载dictionary-我们的资源来操作
  • 其次,我们可以开始翻译,例如,从持续的用户输入中逐字逐句

紧凑型解决方案(需要python 3.8(:

#!/usr/bin/env python3
with open("translation.txt", "r") as f:
dictionary = { k: v.strip()  for k, v in [line.split(":") for line in f.readlines()]}
while word:=input("Word to translate: "):
try:
print(dictionary[word])
except KeyError:
print(f"No translation found for the word: {word}")

最新更新