我試圖找到一個輸入的字符串連續的字母:連續的字母
如果字符串包含基於英國的QWERTY鍵盤則變量給出5分,每一套的佈局連續三個字母三。
例如asdFG將包含三個連續的集合。大小寫無關緊要。
請問你能幫忙,因爲不知道從哪裏開始呢?
我試圖找到一個輸入的字符串連續的字母:連續的字母
如果字符串包含基於英國的QWERTY鍵盤則變量給出5分,每一套的佈局連續三個字母三。
例如asdFG將包含三個連續的集合。大小寫無關緊要。
請問你能幫忙,因爲不知道從哪裏開始呢?
最簡單的方法是首先生成所有可能的三元組:
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)
是這條巨蟒2或3,我使用3這樣會承擔我將需要更改原始輸入? – Jardis
是的,它是Python 2.我將它改爲python 3。 – campovski