Ответы пользователя по тегу Python
  • Как в моем случае правильно сделать проверку на ввод числа пользователем?

    @Vaskey
    Для проверки ввода пользователем числа в Python можно использовать функцию isdigit(). Она возвращает True, если строка состоит только из цифр, и False в противном случае.

    Пример:

    lvl = input("Введите уровень сложности: ")
    
    if lvl.isdigit():
        lvl = int(lvl)
        if lvl == 1:
            # код для уровня 1
        elif lvl == 2:
            # код для уровня 2
        # ...
    else:
        print("Вы ввели не число")

    Здесь мы сначала проверяем, состоит ли строка lvl только из цифр, с помощью метода isdigit(). Если это так, то мы преобразуем ее в целое число lvl = int(lvl) и продолжаем сравнение с ожидаемыми значениями. Если же lvl содержит другие символы, выводим сообщение об ошибке.
    Ответ написан
  • Как найти подстроку в python?

    @Vaskey
    Для поиска подстроки в Python можно воспользоваться методом find(), который ищет первое вхождение подстроки в строке и возвращает его индекс. Если подстрока не найдена, метод возвращает -1.

    В данной задаче, нам не требуется искать подстроку, поэтому мы можем просто разбить строку на символы и для каждого символа вычислить его вес, используя заданный вес буквы "a". Затем, мы можем просуммировать все веса и вернуть их в качестве результата.

    Ниже представлен пример кода, который решает данную задачу:

    def password_strength(password: str, a_weight: int) -> int:
        total_weight = 0
        for char in password:
            char_weight = (ord(char) - ord('a') + a_weight) % 26
            total_weight += char_weight
        return total_weight


    Функция password_strength принимает на вход строку password и целое число a_weight, обозначающее вес буквы "a". Внутри функции мы итерируемся по каждому символу в пароле, вычисляем его вес и добавляем его к общему весу total_weight. Вес каждой буквы вычисляется по формуле (ord(char) - ord('a') + a_weight) % 26, где ord(char) возвращает числовой код символа, ord('a') возвращает числовой код символа "a", a_weight - заданный вес буквы "a", а оператор % используется для обеспечения циклической периодичности весов букв. В конце функция возвращает общий вес пароля.

    Пример использования:

    password = "passw0rd"
    a_weight = 3
    strength = password_strength(password, a_weight)
    print(strength) # Output: 87
    Ответ написан
  • Какие материалы посоветуете изучать начинающему бэкенд-разработчику на Python?

    @Vaskey
    Мне в свое время очень помог Олег Молчанов
    https://www.youtube.com/@zaemiel
    Ответ написан
    Комментировать
  • Как переработать код алгоритма поиска объекта?

    @Vaskey
    Можно упростить ваш алгоритм поиска объекта, объединив два шага (поиск папки по идентификатору объекта и поиск папки по имени) в один. Вместо того, чтобы хранить идентификаторы папок в словаре, можно использовать имена папок как ключи и хранить идентификаторы объектов в списке значений. Тогда вы можете использовать имя папки, чтобы найти соответствующий идентификатор объекта, а затем использовать это значение для поиска папки в массиве created_folders. Вот пример кода:
    FOLDERS = {
        "Geometry": {
            "color": #...,
            "icon":  #...,
            "ids": [
                5163, 
                5167, 
                5173,
                5168,
             ]
        }
    }
    
    obj_type = obj.GetType()
    folder_name = next((name for name, folder in FOLDERS.items() if obj_type in folder['ids']), None)
    folder = next((folder for folder in created_folders if folder.GetType() == folder_name), None)


    В этом примере мы сначала определяем идентификатор объекта, используя метод GetType(). Затем мы находим имя папки, которая соответствует этому идентификатору, с помощью генератора списков и функции next(). Затем мы находим папку, которая соответствует этому имени, с помощью того же подхода.

    Этот подход более простой и легко читаемый, чем использование словаря FOLDERS с идентификаторами папок в качестве значений. Также он более гибкий, потому что вы можете легко добавлять новые папки и объекты в вашу программу, просто добавляя их имена и идентификаторы в словарь FOLDERS.
    Ответ написан