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