Python:在另一个字符串

时间:2017-10-31 18:19:31

标签: python

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"

1 个答案:

答案 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/