簡體   English   中英

Python:一個字符串在另一個字符串中出現多少次

[英]Python : how many times appears a string in another string

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:

# [::-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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM