[英]Minion game- Explain?
得分 玩家在字符串中每次出現子字符串時獲得 +1 分。
例如:String = BANANA 凱文的元音開始詞 = ANA
s = raw_input()
vowels = 'AEIOU'
kevsc = 0
stusc = 0
for i in range(len(s)):
if s[i] in vowels:
kevsc += (len(s)-i)
else:
stusc += (len(s)-i)
if kevsc > stusc:
print "Kevin", kevsc
elif kevsc < stusc:
print "Stuart", stusc
else:
print "Draw"
我不太明白“找出每個字母的排列”是什么意思,但是這段代碼沒有做任何與排列相關的事情。 它在做什么似乎沒有多大意義。
它遍歷輸入字符串,並為每個大寫元音向 Kevin 獎勵積分,為每個其他字符獎勵 Stuart。 在每種情況下獲得的分數等於字母與輸入字符串末尾的距離,例如在字符串“AB”中,Kevin 將獲得 2 分的 A(因為它是大寫元音倒數第二個) Stuart 會為 B 得 1 分(因為它不是大寫元音,而且是最后一個)。
我最初對如何找到子字符串的數量感到困惑。 直到我用筆和紙工作。
讓我們讓這一切變得簡單。 考慮示例測試用例 BANANA 步驟 1:由於我們有元音和輔音,這里將有兩種情況。 這意味着我們有條件。 所以,我們需要使用 if 和 else 來決定誰是贏家。
然后,
想想游戲如何運行。 讓我們考慮一下,他們將逐個字母選擇,然后從中生成子字符串。 我的意思是說...
考慮位於位置 1 的 B,那么我們可以生成哪些可能的子串?
BANANA(字符串本身) - 1, BANAN - 2, BANA - 3, BAN - 4, BA - 5, B - 6. 計數為'6',等於字符串的長度或長度減去0
第二個字母是A,類似上面的方法,我們可以形成ANANA-1,ANAN-2,ANA-3,AN-4,A-5。 計數為 5,即主字符串的長度減去 1
第三個字母是N; NANA-1,NAN-2,NA-3,N-4(長度-2 = 4)
第四個字母是A; ANA-1,AN-2,A-3(長度-3 = 3)
第五個字母是N; NA-1,N-2(長度-4 = 2)
第六個字母是A; A-1(長度-5 = 1)
現在分別添加元音和輔音的結果。
consonant_sum(B,N,N) = 6+4+2 = 12 這是 'Stuart' 的分數
元音總和(A,A,A) = 5+3+1 = 9 這是'Kevin' 的分數。
您可以根據字符串的長度迭代字符串,這可以使用 for 循環和范圍函數來完成。
因此,現在您可以通過比較這些總和,使用 if,elif,else 簡單地輸出獲勝者。 這使得問題變得非常簡單,因為我們只需要遍歷整個字符串一次。
最后! 不要忘記,如果分數相等,我會包含一個打印“Draw”的條件。
如果有不清楚的地方,請告訴我您的想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.