Последовательные письма в питоне

Я пытаюсь найти последовательные буквы во введенной строке:

если строка содержит три последовательных буквы на основе раскладки клавиатуры QWERTY в Великобритании, то переменной дается 5 баллов за каждый набор из трех.

например, asdFG будет содержать три последовательных набора. верхний и нижний регистр не имеют значения.

не могли бы вы помочь, так как не знаете с чего начать?

2 ответа

Решение

Самый простой способ - сначала сгенерировать все возможные тройки:

lines = ["`1234567890-=", "qwertyuiop[]", "asdfghjkl;'\\", "<zxcvbnm,./"]
triples = []
for line in lines:
    for i in range(len(line)-2):
        triples.append(line[i:i+3])

Если вам нужны только символы, а не цифры, скобки и т. Д., Замените lines выше с

lines = ["qwertyuiop", "asdfghjkl", "zxcvbnm"]

Теперь, когда у нас есть все тройки, вы можете проверить с count сколько раз тройка встречается в вводимой строке.

input_string = input().strip().lower()
score = 0
for triple in triples:
    number_of_occurrences = input_string.count(triple)
    score += 5 * number_of_occurrences
print(score)

Бэм, вот и все. То, что это делает, это подсчитывает для каждой тройки, сколько раз это происходит в строке, чтобы вы знали, сколько раз добавить 5 баллов. Мы используем str.lower() конвертировать все символы в нижний регистр, потому что, как вы сказали, заглавные буквы не имеют значения.

Если одно и то же, содержит ли строка определенную тройку один или три раза, вы можете сделать это:

input_string = input().strip().lower()
score = 0
for triple in triples:
    if triple in input_string:
        score += 5
print(score)
qwerty = 'qwertyuiopasdfghjklzxcvbnm'

inp = 'ASdfqazfghZZxc'
inp_lower = inp.lower()

points = 0

for idx in range(0, len(inp_lower) - 2):
    test_seq = inp_lower[idx:idx + 3]
    if test_seq in qwerty:
        points += 5
        print(test_seq, '->', points)
    else:
        print(test_seq)
Другие вопросы по тегам