[英]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.