понимает ли ключевое слово for, что строка является итерацией? - PullRequest
0 голосов
/ 11 июля 2020

Вопрос: «Откройте файл romeo.txt и прочтите его построчно. Для каждой строчки разделите строку на список слов с помощью метода split (). Программа должна построить список слов. Для каждого слова в каждой строке проверьте, есть ли слово уже в списке, и, если нет, добавьте его в список. По завершении программы отсортируйте и распечатайте полученные слова в алфавитном порядке. "

Код:

fname = input("Enter file name: ")
fh = open(fname)
hh = list()
for sen in fh:
    sen=sen.split()
    for element in sen:
        if element not in hh:
            hh.append(element)
            hh.sort()        
print(hh) 

Я хочу убедиться, что понял код. Итак, сначала мы взяли имя файла, затем открыли его, затем создали пустой список, затем разделили строки на список, а затем мы проверили, находятся ли элементы в sen в созданном нами пустом списке, а затем добавили его и распечатали. Кроме того, при использовании ключевого слова for у меня возникает вопрос: понимает ли ключевое слово for, что каждое слово в файле является итерацией еще до его разделения ??

1 Ответ

0 голосов
/ 11 июля 2020

Python документация str.split (): https://docs.python.org/3/library/stdtypes.html#str .split

fname = input("Enter file name: ") #-- user enters name of a file
fh = open(fname) #-------------------- open the file
hh = list() #------------------------- create an empty list
for sen in fh: #---------------------- loop through lines in the file
    sen=sen.split() #----------------- split the line into words
    for element in sen: #------------- loop through words in the line
        if element not in hh: #------- if word is not in the list of unique words
            hh.append(element) #------ add the word to the list
            hh.sort() #--------------- organize the list
print(hh) #--------------------------- print the list of unique words

hh будет списком всех уникальных слов в файле.

Лучший способ работать с файлами в Python - использовать менеджеры контекста. Python Документация по Менеджеру контекста: https://docs.python.org/3/library/contextlib.html

Вероятно, вам следует использовать:

filename = input("Enter file name: ")
unique_words = list()
with open(filename, "r") as file: # 'with' Context Manager
    for line in file:
        line = line.split()
        for word in line:
            if word not in unique_words:
                unique_words.append(word)
                unique_words.sort()
print(unique_words)
...