[英]python program isn't reading input and returning proper output
该程序旨在读取包含具有键(整数 1-1000)的元组的文本文件,以及相关的英语和 hmong 单词。 然后它创建一个字典。
用户然后输入一个英文句子,字典返回 hmong 的翻译。 如果条目包含不在文本文件中的单词,则返回一个问号。
然后它会询问他们是否要输入另一个句子,如果他们说不,那么程序将返回一个列表,该列表打印用户在程序期间输入的每个英语单词的频率。
我已经完成了一般脚本,但逻辑不起作用,我不确定为什么。 当我尝试输入英文句子时,程序返回Hmong: ?
即使单词在文本文件中,但是当我在Another translation (Y/N):
字段中输入相同的句子时,它会接受该句子但不会打印翻译,而只是打印单词的频率.
import string
def load_dictionary(filename):
file=open(filename)
word_dict=dict()
for line in file:
fields=line.strip().split(',')
if len(fields)==3:
hmong_list=fields[1].lower()
english_list=fields[2].lower()
word_dict[english_list]=hmong_list
file.close()
return word_dict
def translate(sentence):
list_words=load_dictionary('C:\\Users\\Bridget\\Downloads\\HmongWords.txt')
translated=''
for word in sentence.split():
if word in list_words:
translated+=list_words[word]+' '
else:
translated+='? '
return translated.strip()
def print_word_frequency(text):
freq_words=dict()
for word in text.split():
if word in freq_words:
freq_words[word]+=1
else:
freq_words[word]=1
print('{:10s} {:10s}'.format('Word', 'Frequency'))
for word in freq_words:
print('{:10s} {:10d}'.format(word,freq_words[word]))
def main():
flag=True
converted_text=''
while flag:
sentence=input("Type your English sentence: ")
sentence = sentence.lower()
for i in string.punctuation:
sentence = sentence.replace(i,' ')
translated=translate(sentence)
print('Hmong: ',translated)
converted_text+=sentence+' '
flag=input("Another translation (Y/N): ").lower()=='y'
print_word_frequency(converted_text)
main()
样品运行
Type your English sentence: I can help you help him.
Hmong: ?
Another translation (Y/N): Y
Type your English sentence: I can help you help him
Hmong: ?
Another translation (Y/N): I can help you help him
Word Frequency
Word Frequency
Word Frequency
Word Frequency
Word Frequency
Word Frequency
Word Frequency
Word Frequency
Word Frequency
Word Frequency
Word Frequency
Word Frequency
i 2
can 2
help 4
you 2
him 2
我也不明白为什么它一遍又一遍地打印单词和频率,而不是一次。 任何指导将不胜感激!
您的代码包含 2 个问题。
第一的。 您没有正确读取文件。 for line in file
不是正确的方法,你需要做for line in file.readlines()
第二。 在循环的第一次迭代后关闭文件
for line in file:
fields=line.strip().split(',')
if len(fields)==3:
hmong_list=fields[1].lower()
english_list=fields[2].lower()
word_dict[english_list]=hmong_list
file.close() # here
file.close()
应该缩进一个
for line in file:
fields=line.strip().split(',')
if len(fields)==3:
hmong_list=fields[1].lower()
english_list=fields[2].lower()
word_dict[english_list]=hmong_list
file.close() # should be here
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.