1)编写一个带有三个字符串参数的函数获胜者。前两个参数表示由Penney Ante游戏的两个玩家选择的硬币投掷结果的序列。第三个论点是在有效地反复投掷硬币时获得的结果序列。如果第一个选择的序列(第一个参数)赢得游戏,则函数必须返回值1,如果第二个选择的序列(第二个参数)赢得游戏,则返回值2;如果没有任何序列获胜,则函数值必须返回0,因为它们都不会在作为第三个论点传递的硬币投掷顺序中观察到。如果前两个参数相同,则必须引发AssertionError,并且消息序列不能相等。如果前两个参数的长度不同,则必须引发AssertionError,并且消息序列的长度必须相等。
问题:我的代码在所有情况下都不起作用,例如:winnaar(' KKK',' MKK',' KMKMKKKKMKKKMMMMKMKK')
正确的结果是:2 我的代码结果是:1
def winnaar(seq1, seq2, seq3):
"""
>>> winnaar('KKK', 'MKK', 'KMKMKKKKMKKKMMMMKMKK')
2
>>> winnaar('MKM', 'MMK', 'KMKMKKKKMKKKMMMMKMKK')
1
>>> winnaar('MKK', 'KKM', 'KKKKKKKKKKKKKKKKKKKK')
0
>>> winnaar('MKK', 'MKK', 'KKKKKKKKKKKKKKKKKKKK')
Traceback (most recent call last):
AssertionError: reeksen mogen niet gelijk zijn
>>> winnaar('MKKM', 'MKK', 'KKKKKKKKKKKKKKKKKKKK')
Traceback (most recent call last):
AssertionError: reeksen moeten zelfde lengte hebben
"""
if seq3.find(seq1) > seq3.find(seq2):
return 1
if seq3.find(seq1) < seq3.find(seq2):
return 2
if seq1 and seq2 not in seq3:
return 0
assert (seq1) == (seq2), "ongeldig serienummerreeksen mogen niet gelijk zijn"
assert len(seq1) != len(seq2), "reeksen moeten zelfde lengte hebben"
答案 0 :(得分:0)
这可能有助于问题#1:
# [::-1] --> This means reverse string
seq3 = seq3[::-1] # The reason I reverse strings is because
seq1 = seq1[::-1] # index() gives you the first occurence
seq2 = seq2[::-1] # the string
if seq1 not in seq3 or seq2 not in seq3:
return 0
if seq1 > seq2:
return 1
if seq1 < seq2:
return 2
对于任何想要帮助的人,可以在这里找到问题:https://dodona.ugent.be/en/exercises/406642900/