Форум сайта python.su
как улучшить этот код ?
import random
# Функция для чтения фраз из файла и создания базы данных
def read_phrases_from_file(file_name):
database =
with open(file_name, “r”, encoding=“utf-8”) as file:
for line in file:
# Разделение фразы на слова
words = line.strip().split()
database.append(words)
return database
# Функция, которая ищет наиболее похожую фразу на основе слов в запросе
def search_response(message, database):
# Разделение запроса на слова
query_words = message.strip().split()
# Переменная для хранения наибольшего количества похожих слов
max_similar_words = 0
# Переменная для хранения наиболее похожей фразы
most_similar_phrase = “”
for words in database:
# Поиск похожих слов в каждой фразе
similar_words = len(set(words) & set(query_words))
if similar_words > max_similar_words:
max_similar_words = similar_words
most_similar_phrase = “ ”.join(words)
# Проверка, была ли найденная фраза уже в диалоге
while most_similar_phrase in database:
most_similar_phrase = random.choice(database)
if most_similar_phrase:
return most_similar_phrase
else:
return “Извините, я не понимаю вас.”
# Чтение фраз из файла и создание базы данных
database = read_phrases_from_file(“бтт.txt”)
# Основной цикл программы
while True:
user_input = input(“Вы: ”)
response = search_response(user_input, database)
print(“Бот:”, response)
# Сохранение фразы пользователя в файл и базе данных
with open(“бтт.txt”, ‘a’, encoding='utf-8') as file:
file.write('\n' + user_input)
database.append(user_input.strip().split())
Прикреплённый файлы:
бот сим2.py (2,1 KБ)
Офлайн
altek7Всё должно быть в функциях.
как улучшить этот код ?
altek7Если человек введёт именно эту фразу и она попадёт в базу данных, как ты отличишь наличие этой фразы в базе данных от отсутствия фразы в базе данных?return "Извините, я не понимаю вас."
Отредактировано py.user.next (Июль 9, 2023 13:56:04)
Офлайн
Офлайн
import random
def search_phrase(keywords, file_path):
result = set() # Используем множество для сохранения уникальных фраз
with open(file_path, ‘r’, encoding='utf-8') as file:
for line in file:
phrase = line.strip()
if any(keyword in phrase for keyword in keywords):
result.add(phrase) # Добавляем уникальную фразу в множество
if len(result) >= 60: # Ограничение числа фраз поиска
break
return list(result) # Преобразуем множество обратно в список
file_path = ‘дтт.txt’
while True:
query = input(“Вы: ”)
keywords = query.strip().split()
found_phrases = search_phrase(keywords, file_path)
if found_phrases:
random_phrase = random.choice(found_phrases) # Случайная фраза из найденных
print(random_phrase)
else:
print(“.. я не нашёл нужной фразы”)
# Запись новой фразы в базу
with open(file_path, ‘a’, encoding='utf-8') as file:
file.write('\n' + query)
Прикреплённый файлы:
бот 1а.py (1,2 KБ)
Офлайн
[code python]между этими тегами вставлять код, для отображения с отступами[/code]
Офлайн
altek7Спасибо, это очень полезно для меня.
фразы для бота -https://vk.com/doc617321754_662931943?hash=4AT55Tz5WlzZFGwJ3MRazx8WtVjcjZXMGxp6gmoL2DD&dl=QEni0IDfWsA9jRlzv8JBp0czyF9ZLogkjYbciFhmLTX можно писать сюда -https://vk.com/altek7 geometry dash
Офлайн
altek7Спасибо! Здорово, что все в одном месте, не нужно искать по отдельности.
фразы для бота -https://vk.com/doc617321754_662931943?hash=4AT55Tz5WlzZFGwJ3MRazx8WtVjcjZXMGxp6gmoL2DD&dl=QEni0IDfWsA9jRlzv8JBp0czyF9ZLogkjYbciFhmLTX heardle unlimited
Офлайн