2016-02-21 128 views
-4

我需要編寫一個函數,replaceSegment,它需要一個字符串,str,和另一個字符串,replace,和兩個整數,startstop函數它的Python替換字符串

函數應該返回在這str'X'所有出現,從指數start達,但不包括指數stopreplace更換一個新的字符串。

執行相同或類似信息的內置函數或模塊可能不會用於此任務。

例子:

replaceSegment ("HXello! X balXoo!", "Hope", 3, 7) 'HXello! Hope balXoo! 

這是從舊的考試,我不能弄明白。我猜它應該使用for循環?

+2

「我無法弄清楚」這不夠研究努力。你有什麼嘗試?你卡在哪裏?你會知道如何在沒有啓動和停止參數的情況下完成任務嗎? – timgeb

+1

你好!如果你包含一些你已經做過的嘗試,它會真的幫助你的帖子。顯示你正在使用的代碼(即使它不工作),是**最好的**方式向社區解釋你究竟在做什麼以及你在哪裏陷入困境。 – Lix

+1

我投票結束這個問題作爲題外話題,因爲它顯示零研究努力或嘗試,並不清楚OP卡在哪裏。 – timgeb

回答

1

儘管您沒有發佈任何代碼,但在我看來,儘管您自己確實試圖自己完成這項任務,但您確實被困住了。我決定在這裏幫助你,因爲我看到你是一個新成員,可能並不知道網站的所有規則,但在將來,要知道如果你包含代碼,人們可能只會回答你的問題你試過:

def replaceSegment(s, replace, start, stop): 
    new_string = s[:start] 
    for c in s[start:stop]: 
     new_string += replace if c == 'X' else c 
    new_string += s[stop:] 
    return new_string 

或同等學歷(但令人作嘔不可讀)的一行:

replaceSegment=lambda s,r,i,e:s[:i]+''.join(r if c=='X' else c for c in s[i:e])+s[e:] 

我必須第一個參數的名字從str更改爲s因爲str是名稱Python中的內置函數,通常認爲它是不好的做法來掩蓋它們。另外,考慮到你的算法描述,你的例子並沒有什麼意義。我認爲矛盾的主要來源是你沒有意識到Python是一種零索引語言,這意味着字符串的第一個字符的索引是零,而不是一個。因此,爲了得到你想要的輸出,我改爲調用replaceSegment('HXello! X balXoo!', 'Hope', 2, 9)。我幫助replaceSegment('X', 'Hope', 0, 1)

+0

是的,你說得對。我一直試圖解決這個問題幾個小時,我總是得到同樣的錯誤。感謝您的幫助,我真的很感激它! –