0

I searched daniweb for related questions and google but i canot seem to find my problem in my code
When I try to search for a word that exists in my list it returns false

This is my code

def main():
    #the word that I am looking for
    word = "fox"

    #opening my dictionary file
    dict = open("src/DictionaryE.txt","r")

    #add the file to a list
    for i in dict:

        list =[]
    #geting rid of formating
        i=i.strip()

        list.append(i)

        print list
    #searching for the word in list
    if word in list:
    #if the word is in the list print it    
        print word
    else:
        print "You typed a word that dosen't exist"

main()    

My dictionary is a simple txt file with 3 words

bear
wolf 
fox 

Oh and the txt file is read and printed correctly so no I/O error

If any one knows whatI am doing wrong please tell me

Thank you

3
Contributors
3
Replies
31
Views
2 Years
Discussion Span
Last Post by dany12
2

Dont use list and dict as variable names,words are reseverd bye Python.
To clean it up.

my_file = open("words.txt")
lst = [] #Outside the loop
for word in my_file:
    word = word.strip()
    lst.append(word)
my_file.close()

#searching for the word in list
search_word = "fox"
if search_word in lst:
    print 'Word found: <{}>\nDictionary {}'.format(search_word, lst)
else:
    print "You typed a word that dosen't exist"

'''Output-->
Word found: <fox>
Dictionary ['bear', 'wolf', 'fox']
'''

Don't place all code in one big function.
Do some execerice on function,and try to keep function small and do a specific task and return result out.
This make code eaiser to read an test.

def read_contend(dictionary):
    '''Read contend and return a list'''
    with open(dictionary) as f_obj:
        word_lst = [word.strip() for word in f_obj]
        return word_lst

def search_contend(search_word, word_lst):
    '''Search for a word in input contendt'''
    if search_word in word_lst:
        return search_word
    return "You typed a word that dosen't exist"

if __name__ == '__main__':
    dictionary = 'words.txt'
    search_word = "fox"
    word_lst = read_contend(dictionary)
    print search_contend(search_word, word_lst)

Edited by snippsat

1

Add

print(repr(word))
print(list)

immediately before line 19 and post the output here.

Also 'list' and 'dict' are so common words in python that nobody uses them for variables.

1

Thank you for your input I will create a function for each task and keep it small

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.