/ / Postupné písmená v pythone - python, reťazec, klávesnica, qwerty

Nasledujúce písmená v pytóne - python, reťazec, klávesnica, qwerty

V zadanom reťazci sa snažím nájsť po sebe idúce písmená:

ak reťazec obsahuje tri po sebe idúce písmená na základe rozloženia klávesnice QWERTY v Spojenom kráľovstve, potom je pre každú sadu troch premenných uvedená 5 bodov.

napr. asdFG by obsahovala tri po sebe idúce súbory. veľké a malé písmená.

môžete mi prosím pomôcť ako don "t vedieť, kde začať s týmto?

odpovede:

1 pre odpoveď č. 1

Najjednoduchším spôsobom by bolo najprv vygenerovať všetky možné trojice:

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

Ak chcete len znaky a nie čísla a zátvorky atď lines vyššie s

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

Teraz, keď máme všetky trojice, môžete skontrolovať count koľkokrát sa vyskytne trojica v zadanom reťazci.

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, tam idete. To, čo to robí, sa počíta pre každú trojicu, koľkokrát sa vyskytuje v reťazci, takže viete, koľkokrát pridáte 5 bodov. Používame str.lower() previesť všetky znaky na malé písmená, pretože, ako ste povedali, kapitalizácia nezáleží.

Ak je to rovnaké, či reťazec obsahuje určitú trojicu raz alebo trikrát, môžete to urobiť:

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

-1 pre odpoveď č. 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)