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 № 1A 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)