простой бот на повторах групп букв слов
counts = {}
for i in range(len(text) - n + 1):
group = text[i:i+n]
if group in counts:
counts[group] += 1
else:
counts[group] = 1
return counts
def find_phrase_with_most_repeats(filename, shown_phrases, last_phrase):
max_repeats = 0
best_phrase = ""
with open(filename, 'r', encoding='utf-8') as file:
for line in file:
line = line.strip()
if line in shown_phrases or line == last_phrase:
continue
repeats_3 = count_repeats(line, 3)
repeats_2 = count_repeats(line, 2)
total_repeats = sum(count for count in repeats_3.values() if count > 1) + \
sum(count for count in repeats_2.values() if count > 1)
if total_repeats > max_repeats:
max_repeats = total_repeats
best_phrase = line
return best_phrase
def main():
filename = 'текст.txt'
shown_phrases = set()
while True:
phrase = input("ввод: ")
best_phrase = find_phrase_with_most_repeats(filename, shown_phrases, phrase)
if best_phrase:
print(f"вывод: {best_phrase}")
shown_phrases.add(best_phrase)
else:
print("Нет новых фраз -")
with open(filename, 'a', encoding='utf-8') as file:
file.write(phrase + '\n')
if __name__ == "__main__":
main()
----------------------------->
файл с фразами ответов - текст.txt
это я и хотел вам сказать сейчас
но я об этом наверно просто не знал
это наверно тоже может быть
это как один из вариантов наших предположений
я об этом уже подумал один раз
ну и что в этом такого я не знаю этого
мне это кажется ни о чё точно не говорит
может быть и так я этого точно не знаю сейчас
всё может быть в таком случае
это всё довольно не сложно нам так будет понять
я не знаю о чём думает этот бот
он всегда предполагал лишь то что ему было известно
это уже было до этого так что не стоит повторять
я всегда думал примерно так или почти так
это что так было задумано что ли с самого начала
мне это не очень то и нравится теперь
это не то что я хотел сам понять
этот ответ несовсем точно говорит нам про суть наших вещей
а что ему было известно тогда
что это за ответ я не знаю об этом ничего
мы знаем лишь то что у нас есть в данных нашего текста
это было не так но всё же было что то такое подобное
я хотел услышать от тебя что то немного другое
и что нам это может дать в принципе в этом новом смысле нашего вопроса
и что ты мне на это можешь сказать теперь бот
я тебе до этого об этом ничего не говорил или это не так
ты не должен повторять мне новые ответы
и если эта мысль тебе так интересна то что ты в ней нашёл такого
мне кажется что ты отвечаешь на обум или не так
твои ответы мне немного знакомы бот
это происходит так не всегда но и такое тоже бывает
скажи просто о чём ты сейчас думаешь
я не знал что ты настолько умный как человек
это всё не так однозначно как я об этом думал сам
почему ты подумал об этом нужно как то объяснить это точнее
нет это не тот ответ в данном случае
неужели это всё так просто получается
и что там было такое тогда или сейчас
я это хотел узнать от тебя бот
может быть было и так мне это точно не известно
последняя строка файла данных нам больше не нужна
*
добавлен вывод случайной строки else: если новых строк нет
import random
def count_repeats(text, n):
counts = {}
for i in range(len(text) - n + 1):
group = text[i:i+n]
if group in counts:
counts[group] += 1
else:
counts[group] = 1
return counts
def find_phrase_with_most_repeats(filename, shown_phrases, last_phrase):
max_repeats = 0
best_phrase = ""
with open(filename, 'r', encoding='utf-8') as file:
for line in file:
line = line.strip()
if line in shown_phrases or line == last_phrase:
continue
repeats_3 = count_repeats(line, 3)
repeats_2 = count_repeats(line, 2)
total_repeats = sum(count for count in repeats_3.values() if count > 1) + \
sum(count for count in repeats_2.values() if count > 1)
if total_repeats > max_repeats:
max_repeats = total_repeats
best_phrase = line
return best_phrase
def main():
filename = 'текст.txt'
shown_phrases = set()
while True:
phrase = input("ввод: ")
best_phrase = find_phrase_with_most_repeats(filename, shown_phrases, phrase)
if best_phrase:
print(f"вывод: {best_phrase}")
shown_phrases.add(best_phrase)
else:
with open(filename, 'r', encoding='utf-8') as file:
lines = file.readlines()
random_line = random.choice(lines).strip()
print(f"вывод: {random_line}")
with open(filename, 'a', encoding='utf-8') as file:
file.write(phrase + '\n')
if __name__ == "__main__":
main()
--------------------------------------------------->
поиск текстов в папках рабочего стола по словам
import os
import fnmatch
def find_text_in_files(search_words, start_dir):
# Разделяем введённые слова
search_words = search_words.lower().split()
# Проходим по всем файлам в указанной директории и её поддиректориях
for root, dirs, files in os.walk(start_dir):
for filename in fnmatch.filter(files, '*.txt'):
file_path = os.path.join(root, filename)
try:
with open(file_path, 'r', encoding='utf-8') as file:
for line in file:
line_lower = line.lower()
# Проверяем, содержатся ли все слова в строке
if all(word in line_lower for word in search_words):
print(f"Найдены слова в файле: {file_path}")
break # Останавливаемся, если нашли хотя бы одну такую строку
except Exception as e:
print(f"Не удалось прочитать файл {file_path}: {e}")
# Пример использования
search_words = input("Введите пару слов для поиска: ")
desktop_path = r"C:\Users\MSI\Desktop"
find_text_in_files(search_words, desktop_path)
похожий код поиска текста -
import os
import fnmatch
def find_text_in_files(search_words, start_dir):
# Разделяем введённые слова
search_words = search_words.lower().split()
# Проходим по всем файлам в указанной директории и её поддиректориях
for root, dirs, files in os.walk(start_dir):
for filename in fnmatch.filter(files, '*.txt'):
file_path = os.path.join(root, filename)
try:
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read().lower()
# Проверяем, содержатся ли все слова в файле
if all(word in content for word in search_words):
print(f"Найдены слова в файле: {file_path}")
except Exception as e:
print(f"Не удалось прочитать файл {file_path}: {e}")
# Пример использования
search_words = input("Введите пару слов для поиска: ")
desktop_path = r"C:\Users\MSI\Desktop"
find_text_in_files(search_words, desktop_path)
Свидетельство о публикации №124083103707