чат бот новый сортировка ответа по длине фраз

import os

# Функция для подсчета количества слов и букв в фразе
def count_words_and_letters(phrase):
    words = phrase.split()
    num_words = len(words)
    num_letters = sum(len(word) for word in words)
    return num_words, num_letters

# Функция для поиска фразы в файле, наиболее близкой по количеству слов и букв
def find_closest_phrase(input_phrase, filename):
    input_words, input_letters = count_words_and_letters(input_phrase)
   
    closest_phrase = None
    closest_difference = float('inf')

    with open(filename, 'r', encoding='utf-8') as file:
        for line in file:
            line = line.strip()
            words, letters = count_words_and_letters(line)
            difference = abs(words - input_words) + abs(letters - input_letters)
            
            if difference < closest_difference:
                closest_difference = difference
                closest_phrase = line

    return closest_phrase

# Функция для сохранения фразы в файл
def save_phrase(phrase, filename):
    with open(filename, 'a', encoding='utf-8') as file:
        file.write(phrase + '\n')

# Основной цикл ввода фраз
def main():
    filename = 'фразы.txt'  # один файл для хранения всех фраз

    if not os.path.exists(filename):
        print(f"Файл {filename} не найден, создается новый файл.")
        open(filename, 'w').close()  # создаем файл, если он не существует

    while True:
        input_phrase = input("Вы: ")

        closest_phrase = find_closest_phrase(input_phrase, filename)
        if closest_phrase:
            print(f"бот: {closest_phrase}")
        else:
            print("Фраза не найдена.")

        save_phrase(input_phrase, filename)
       
if __name__ == "__main__":
    main()




** 



import os

# Функция для подсчета количества слов и букв в фразе
def count_words_and_letters(phrase):
    words = phrase.split()
    num_words = len(words)
    num_letters = sum(len(word) for word in words)
    return num_words, num_letters

# Функция для поиска фразы в файле, наиболее близкой по количеству слов и букв
def find_closest_phrase(input_phrase, filename):
    input_words, input_letters = count_words_and_letters(input_phrase)
   
    closest_phrase = None
    closest_difference = float('inf')

    with open(filename, 'r', encoding='utf-8') as file:
        for line in file:
            line = line.strip()
            words, letters = count_words_and_letters(line)
            difference = abs(words - input_words) + abs(letters - input_letters)
            
            if difference < closest_difference:
                closest_difference = difference
                closest_phrase = line

    return closest_phrase

# Функция для сохранения фразы в файл
def save_phrase(phrase, filename):
    with open(filename, 'a', encoding='utf-8') as file:
        file.write(phrase + '\n')

# Основной цикл ввода фраз
def main():
    filename = 'phrases.txt'  # один файл для хранения всех фраз

    if not os.path.exists(filename):
        print(f"Файл {filename} не найден, создается новый файл.")
        open(filename, 'w').close()  # создаем файл, если он не существует

    while True:
        input_phrase = input("Введите фразу: ")

        closest_phrase = find_closest_phrase(input_phrase, filename)
        if closest_phrase:
            print(f"Наиболее близкая фраза: {closest_phrase}")
        else:
            print("Фраза не найдена.")

        save_phrase(input_phrase, filename)
        print(f"Фраза '{input_phrase}' сохранена в файл {filename}.\n")

if __name__ == "__main__":
    main()



  ** 


import os

# Функция для подсчета количества слов и букв в фразе
def count_words_and_letters(phrase):
    words = phrase.split()
    num_words = len(words)
    num_letters = sum(len(word) for word in words)
    return num_words, num_letters

# Функция для поиска фразы в файле, наиболее близкой по количеству слов и букв
def find_closest_phrase(input_phrase, filename):
    input_words, input_letters = count_words_and_letters(input_phrase)
   
    closest_phrase = None
    closest_difference = float('inf')

    with open(filename, 'r', encoding='utf-8') as file:
        for line in file:
            line = line.strip()
            words, letters = count_words_and_letters(line)
            difference = abs(words - input_words) + abs(letters - input_letters)
            
            if difference < closest_difference:
                closest_difference = difference
                closest_phrase = line

    return closest_phrase

# Функция для сохранения фразы в файл
def save_phrase(phrase, filename):
    with open(filename, 'a', encoding='utf-8') as file:
        file.write(phrase + '\n')

# Основной цикл ввода фраз
def main():
    filename = 'phrases.txt'  # один файл для хранения всех фраз

    if not os.path.exists(filename):
        print(f"Файл {filename} не найден, создается новый файл.")
        open(filename, 'w').close()  # создаем файл, если он не существует

    while True:
        input_phrase = input("Введите фразу: ")

        closest_phrase = find_closest_phrase(input_phrase, filename)
        if closest_phrase:
            print(f"Наиболее близкая фраза: {closest_phrase}")
        else:
            print("Фраза не найдена.")

        save_phrase(input_phrase, filename)
        print(f"Фраза '{input_phrase}' сохранена в файл {filename}.\n")

if __name__ == "__main__":
    main()


Рецензии