/ / Letras consecutivas em python - python, string, teclado, qwerty

Letras consecutivas em python - python, string, teclado, qwerty

Eu estou tentando encontrar letras consecutivas em uma string digitada:

se uma string contiver três letras consecutivas com base no layout de um teclado QWERTY do Reino Unido, uma variável receberá 5 pontos para cada conjunto de três.

por exemplo. o asdFG conteria três conjuntos consecutivos. maiúsculas e minúsculas não importa.

você pode por favor ajudar como não sabe por onde começar isso?

Respostas:

1 para resposta № 1

A maneira mais fácil seria primeiro gerar todos os triplos possíveis:

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

Se você quiser apenas os caracteres e não números e colchetes, substitua o lines acima com

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

Agora que temos todos os triplos, você pode verificar com count quantas vezes um triplo ocorre na string inserida.

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)

Bam, ai você vai. O que isso faz é contar para cada tripla quantas vezes ocorre em uma string, então você sabe quantas vezes adicionar 5 pontos. Nós usamos str.lower() para converter todos os caracteres em minúsculas porque, como você disse, a capitalização não importa.

Se é o mesmo se uma string contém um triplo de uma vez ou três vezes, então você pode fazer isso:

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

-1 para resposta № 2
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)