2017-10-31 14 views
0

1)3つの文字列引数を取る関数勝者を書く。最初の2つの引数は、ペニー・アンテ・ゲームの2人の選手が選んだコイントーチの結果のシーケンスを表しています。 3番目の議論は、効果的にコインを繰り返し投げたときに得られる一連の結果です。この関数は、最初に選択したシーケンス(最初の引数)がゲームに勝った場合は値1を返し、2番目の選択されたシーケンス(2番目の引数)がゲームに勝った場合は値2を返し、第3引数として渡されたコイントーシスの順序で観察された。最初の2つの引数が同じ場合、AssertionErrorを発生させ、メッセージシーケンスを等しくすることはできません。最初の2つの引数の長さが同じでない場合は、メッセージシーケンスの長さを同じにしてAssertionErrorを生成する必要があります。Python:別の文字列内に文字列が何回現われるか

問題:私のコードは、例えば、すべての場合に動作しない: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" 
+5

これを2つの異なる質問に分割してください。 – glibdud

+0

最初の質問については、 '>'と '<'演算子を反転する必要があります。また、この1つの 'seq1とseq2はseq3にありません。'(seq1)と(seq2ではseq3にない)と評価されるので、正しいものではありません。 –

答えて

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/

+0

これは役に立たないと思います。それでもやはり間違った解決策を提供します。 – Lien

関連する問題