@ferdir

Как найти подстроку в python?

Адам работает в отделе безопасности. И ему необходимо написать программу вычисляющую надежность пароля. Пароль может состоять только из строчных букв английского алфавита. Каждая буква имеет вес от 0 до 25. Вес буквы a задаётся явно. Вес остальных букв получается циклическим образом от буквы а. Например, если вес буквы а = 5, то вес буквы b = 6, c = 7, u =25, а v = 0и так далее. Надежность пароля – это сумма веса каждой буквы.
На вход вы получаете строку, содержащую пароль и число, обозначающее вес буквы а. На выход вы должны вернуть вес пароля.
Пример входных данных:
password 3

Пример входных данных:
131
Объяснение:
Если вес а = 3, то p = 18, a = 3, s = 21, s = 21, w = 25, o = 17, r = 20, d = 6. В этом случае надёжность пароля = 18+3+21+21+25+17+20+6=131
  • Вопрос задан
  • 192 просмотра
Решения вопроса 1
@IraDzyuba
Вариант решения задачи

from string import*

# Принимаем входные данные
input_string = input().split()
password = input_string[0]; start = int(input_string[1])

# Создаем список всех букв алфавита
letters = list(ascii_lowercase)
# Создаем словарь, где ключ - буква алфавита, а значение - вес буквы
# В случае, если вес буквы больше 25, то из суммы веса вычитаем проверочное условие (в случае истинности дает 1) умноженное на 26 (для того, чтобы первая следующая буква дала вес равный 0, а не 1)
letters_count = {letters[i]:i+start-(((i+start)>25)*26) for i in range(len(letters))}

# Создаем функцию вычислений веса буквы 
def get_letter_count(letter):
    return letters_count[letter]

# Счтчик веса всего пароля
sum = 0
# Цикл вычисления веса пароля
for letter in password:
    sum += get_letter_count(letter)

print(sum)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@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
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы