Проблема такова:
Имея набор текстовых файлов, содержащих синонимы для разных слов,
завершите основную программу, чтобы вывести синонимы для определенного слова.
Каждый текстовый файл содержит синонимы для слова, указанного в
имени файла, и каждая строка в файле перечисляет синонимы слова, которые
начинаются с одной и той же буквы, разделенной пробелом. Программа считывает
слово и букву от пользователя и открывает текстовый файл, связанный
с введенным словом. Затем программа сохраняет содержимое текстового
файла в словаре, предварительно определенном в программе. Наконец, программа
просматривает словарь и выводит все синонимы, начинающиеся с
вводимой буквы, по одному синониму в строке или сообщение, если синонимы
начинающиеся с введенной буквы не найдены.
Советы: используйте первую букву синонима в качестве ключа при сохранении
синонима в словаре. Предположим, что все буквы в нижнем регистре.
Пример: если входные данные программы:
Код: Выделить всё
educate
c
Код: Выделить всё
brainwash brief
civilize coach cultivate
develop discipline drill
edify enlighten exercise explain
foster
improve indoctrinate inform instruct
mature
nurture
rear
school
train tutor
Код: Выделить всё
civilize
coach
cultivate
Код: Выделить всё
educate
a
Код: Выделить всё
No synonyms for educate begin with a.
Код: Выделить всё
synonyms = {} # Define dictionary
initial_input = input()
start_letter = input()
if initial_input == 'Educate' or 'educate':
with open('educate.txt', 'r') as e:
lines = e.readlines()
for word in lines:
if ord(str(word[0])) == ord(str(start_letter)):
key = start_letter
split = word.split(' ')
synonyms[key] = split
print(synonyms)
if ord(str(start_letter)) != ord(str(word[0])):
print(f'No synonyms for educate begin with {start_letter}.')
elif initial_input == 'Happy' or 'happy':
with open('happy.txt', 'r') as h:
lines = h.readlines()
elif initial_input == 'Goal' or 'goal':
with open('goal.txt', 'r') as e:
lines = e.readlines()
Код: Выделить всё
educate
b
Код: Выделить всё
{'b': ['brainwash', 'brief\n']}
No synonyms for educate begin with b.
No synonyms for educate begin with b.
No synonyms for educate begin with b.
No synonyms for educate begin with b.
No synonyms for educate begin with b.
No synonyms for educate begin with b.
No synonyms for educate begin with b.
No synonyms for educate begin with b.
No synonyms for educate begin with b.
No synonyms for educate begin with b.
Я немного изменил код и получил следующее:
Код: Выделить всё
if initial_input.lower() == 'educate':
with open('educate.txt', 'r') as e:
lines = e.readlines()
for word in lines:
if word[0] == start_letter:
split = word.split(' ')
synonyms[start_letter] = split
for x in synonyms[start_letter]:
print(x)
break
else:
print(f'No synonyms for educate begin with {start_letter}.')
Код: Выделить всё
No synonyms for educate begin with c.
civilize
coach
cultivate
Подробнее здесь: https://stackoverflow.com/questions/695 ... assignment
Мобильная версия