Последовательные письма в питоне
Я пытаюсь найти последовательные буквы во введенной строке:
если строка содержит три последовательных буквы на основе раскладки клавиатуры 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)