#python
#python
Вопрос:
Мне поручено создать программу, которая будет запрашивать ввод для слова. Я должен написать программу для поиска слова в словаре. (Я уже составил) [Моя подсказка такова: вы найдете первый символ слова. Получите список слов, начинающихся с этого символа. Пройдите по списку, чтобы найти нужное слово.] Пока у меня есть следующий код:
Word = input ("Search word: ")
my_file = open("input.txt",'r')
d = {}
for line in my_file:
key = line[0]
if key not in d:
d[key] = [line.strip("n")]
else:d[key].append(line.strip("n"))
Я подобрался близко, но застрял. Заранее благодарю вас!
user_word=input("Search word: ")
def file_records():
with open("input.txt",'r') as fd:
for line in fd:
yield line.strip()
for record in file_records():
if record == user_word:
print ("Word is found")
break
for record in file_records():
if record != user_word:
print ("Word is not found")
break
Комментарии:
1. что? вы имеете в виду input.txt представляет собой набор всех слов, и вам поручено выполнить поиск, если введенное пользователем слово находится в input.txt ?
2. Да, но наш профессор хочет, чтобы мы взяли input.txt и преобразуйте его в словарь. Оттуда выполните поиск, есть ли введенное пользователем слово в словаре
3. когда вы говорите преобразовать файл в словарь, какого формата записи во входном файле? И является ли это согласованным шаблоном?
4. Это просто список слов. Вот список:
5. америкофобия, зоофобия, бактериофобия, погонофобия, мастигофобия, клинофобия, апифобия, орнитофобия, гемофобия, эритрофобия, бромидросифобия, гефирофобия, баллистофобия, тафефобия, карцинофобия, айлурофобия, токофобия, эдофобия, синофобия, экклезиофобия, нефофобия, койтофобия, хеймафобия, хромофобия, кометофобия, киберфобия , копростазофобия, некрофобия, эпистолофобия, демофобия/охлофобия, гигрофобия, скотофобия, эософобия, танатофобия, батофобия, мизофобия, патофобия/ нозофобия
Ответ №1:
Вы могли бы сделать что-то вроде этого,
words = []
with open("input.txt",'r') as fd:
words = [w.strip() for w in fd.readlines()]
user_word in words #will return True or False. Eg. "americophobia" in ["americophobia",...]
fd.readlines() считывает все строки в файле в список, а затем w.strip() должен удалить все начальные и конечные пробелы (включая перевод строки). Еще попробуйте — w.strip( rnt)
[w.strip() for w in fd.readlines()]
в Python это называется пониманием списка
Это должно работать до тех пор, пока файл не будет слишком большим. Если существует миллионы записей, вы можете рассмотреть возможность создания функции genertor для чтения файла. Что-то вроде,
def file_records():
with open("input.txt",'r') as fd:
for line in fd:
yield line.strip()
#and then call this function as
for record in file_records():
if record == user_word:
print(user_word " is found")
break
else:
print(user_word " is not found")
PS: Не уверен, зачем вам нужен словарь Python. Ваш профессор имел в виду английский словарь 🙂
Комментарии:
1. Отлично! просто совет на следующий раз, возможно, вам захочется отформатировать код!
2. Еще раз спасибо, и у меня остался последний вопрос. Это работает, но когда я ищу слово, оно возвращает «слово найдено» и «слово не найдено»
3. Я использовал код, которым вы поделились, для создания генератора
4. вы имеете в виду, что оно возвращает оба? можете ли вы вставить фактический код сюда
5. опубликовано в моем первоначальном вопросе