[英]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.