Py学习  »  Python

需要帮助才能用python编写一个简单的字典

Harry Roberts • 4 年前 • 318 次点击  

我需要一个简单的字典,它的工作方式是这样的:首先它取我们有4种语言翻译的单词的数量(n),然后我们在每行(共n行)输入我们有的单词,它们的翻译用空格隔开作为字典源,然后我们需要要求用户输入一个词组,这个词组可能有超过以前提供的单词作为字典源,并且这个词组不仅可以是一种特定的语言,例如它可能是英语、法语和德语的混合,但是我们需要将这个词组翻译成第一种语言,在我们的例子中是波斯语,如果没有翻译,它只会打印这个词本身。下面是代码:

def read_dictionary():
for i in range(0, words_num):
    dict_words = str(input())
    words[dict_words.split()[0]] = dict_words.split()[1:]


def translator():
    translation = ""
    input_phrase = str(input("Enter your phrase to translate please: ")).split()
    for word in input_phrase:
        for k, v in words.items():
            if word in v:
                translation += (k + " ")
            else:
                translation += (word + " ")
    print(translation)

words_num = int(input("Enter the number of existing translated words in dictionary: "))
words = {}
read_dictionary()
translator()

下面是样本输入和期望输出:

**input:**
Enter the number of existing translated words in dictionary: 
4
man I je ich        
kheili very très sehr
alaghemand interested intéressé interessiert 
barnamenevisi programming laprogrammation Programmierung
Enter your phrase to translate please: 
I am very interested in programming
**output:**
man am kheili alaghemand in barnamenevisi

但它的输出是这样的:

man I I I am am am am very kheili very very interested interested alaghemand interested in in in in programming programming programming barnamenevisi 
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50938
 
318 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Kieran Moynihan
Reply   •   1 楼
Kieran Moynihan    4 年前

这个问题源于 translator() 功能。

为每个人 word input_phrase ,你迭代每个 k, v 配对 words.items() . 到目前为止还不错。

那我们想怎么办?我们要检查每一对 k,v型 直到我们找到一个匹配的单词 v ),然后(如果需要)添加密钥 k translation 我们正在建设。如果找不到匹配的单词,我们只需添加原始单词 单词 价值 翻译 .

代码的问题是,即使你找到了一个单词,你也要不断地查找字典中剩余的键。另外,对于字典中的每一个键,您要么添加它的翻译,要么开始 单词 ,此时您只应添加基 单词 如果你找不到匹配的。

就我个人而言,我会改变你的内心 for 循环到一个名为 translate_word() 或者类似的,但是一个简单的方法 翻译() 无重大变化的功能如下:

def translator():
    translation = ""
    input_phrase = str(input("Enter your phrase to translate please: ")).split()
    for word in input_phrase:
        found = False
        for k, v in words.items():
            if word in v:
                translation += (k + " ")
                found = True
                break
        if not found:
            translation += (word + " ")
    print(translation)

在新的 翻译() 函数,您可以看到,对于每个新单词,您都设置了一个变量 found False . 建立 将表示您是否在字典中找到了合适的翻译。

然后你将反复阅读字典。如果找到匹配项,则添加 翻译,设置 建立 True (因为你找到了一个翻译),而且 break 从内心深处 对于 循环。

一旦走出内心 对于 loop,你看看你有没有 建立 翻译 单词 . 如果找不到翻译,只需添加 单词 翻译 .