我有以下基本工作,但我正在努力与最终印刷。它调用文本文件中保存的数据,条目如下:
I,ngaju
dance,juka-pinyi
代码读取用户输入并将其与文本文件填充的字典进行比较,以便从英语翻译为原住民。到目前为止一切顺利,但是当我输入多个用户输入词时,它只返回原住民的最后一个单词。所以,我跳舞'只打印' juka-pinyi'。我做错了什么?!
dictionary = {}
for line in open('dictionary.txt'):
english, aboriginal = line.strip().split(',')
dictionary[english] = aboriginal
word = input('English: ').lower().split()
while word != []:
for item in word:
if item in dictionary:
print (dictionary[item])
word = input('English: ').lower().split()
编辑:
感谢您的评论。它现在正在处理已解决的小写问题和缩进,但是在单独的行上返回单词。只需要研究如何让它在同一条线上打印出来!
dictionary = {}
for line in open('dictionary.txt'):
english, aboriginal = line.strip().split(',')
dictionary[english.lower()] = aboriginal
word = input('English: ').lower().split()
while word != []:
for item in word:
if item in dictionary:
print (dictionary[item])
word = input('English: ').lower().split()
答案 0 :(得分:2)
我跳舞 - 显然会返回juka-pinyi,因为'我'不在字典中而且你用户输入的内容较低:)
否则,代码似乎没问题。我假设这是一个错字,最后一行错误地缩进。
答案 1 :(得分:2)
您所包含的字典摘录意味着这些条目区分大小写。对str.lower()的调用将阻止单词" I"从而被匹配,因为它在用户输入之后变得扁平化为小写。如果你的意图是强迫所有内容都是小写的,我建议你把字典初始化代码更改为:
for line in open('dictionary.txt'):
english, aboriginal = [i.lower() for i in line.strip().split(',')]
dictionary[english] = aboriginal
答案 2 :(得分:2)
你的字典是这样的:
{'I':'ngaju','dance':'juka-pinyi'}
并且您的输入是'我跳舞',但您使用此功能将每个单词转换为小写:
word = input('English: ').lower().split()
使输入为'我跳舞'。因此,它只能在字典中找到'dance'并进行翻译。您需要使用以下字母仅使用小写字母填充字典:
dictionary[english.lower()] = aboriginal
而不是:
dictionary[english] = aboriginal
或者你需要输入输入而不使用它将其转换为小写:
word = input('English: ').split()
而不是:
word = input('English: ').lower().split()