簡體   English   中英

python 程序沒有讀取輸入並返回正確的 output

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM