2016-06-08 70 views
-1

任務是:爲什麼Python中的我的front_back程序不工作?

給定一個字符串,返回其中第一個和最後一個字符都被更換一個新的字符串。

def front_back(str): 

    if len(str)<=0: 
    return str 

    else: 
    front=str[0] 
    back=str[-1] 
    new = str.replace(str[0], back) 
    print new 
    new_2=new.replace(new[-1], front) 
    print new_2 

front_back("code") 
+0

什麼問題? –

+0

歡迎來到StackOverflow。看起來你已經有了自己的學校作業,需要一些幫助?我建議你問你的老師,或者在你的學習材料中查找它,而不是在interwebz上釣魚。但是如果你打算這麼做的話,請解釋哪部分代碼不適合你,期望的行爲是什麼,甚至可能是堆棧跟蹤顯示你遇到的錯誤,最重要的是**:我試圖解決這個問題。 – Torxed

+0

問題出在第二個'replace':它代替了所有的字符,而不僅僅是最後一個。 –

回答

2

爲什麼?

它不會起作用,因爲.replace()將替換字符的所有匹配,不一定只有第一個和最後一個

下面是構建與第一,身體和最後部分字符串的解決方案

text = 'code' 
first, body, last = text[0], text[1:-1], text[-1] 
result = last + body + first 
# 'eodc' 
1

字符串文字可切片加入

>>> s = "hello world" 
>>> s[-1] + s[1:-1] + s[0] 
'dello worlh' 

P.S. str是python中的內建函數,因此將它用作變量名是個壞主意。

0

首先,從不調用變量str。爲什麼?因爲這是Python字符串類的名稱。如果你使用相同的名字,那麼你就會丟掉它。我用txt

你的長度測試是合理的,但下限可以增加(單個字符將是愚蠢的)。

但是使用str.replace()是不可行的。爲什麼?那麼它可以在你的測試用例中起作用,但只是因爲每個字符都是唯一的。 str.replace()替換出現指定的字符串。所以如果第一個或最後一個字符在其他地方重複,那麼這個字符也會改變。

您可以使用切片,其中第一個(最左邊的)字符爲0(零)。您還可以使用負數索引右側,因此-1是最後一個(最右側)的字符。角色的範圍從開始到最後一個角色。所以[1:-1]從第二個字符到最後一個字符。

def front_back(txt): 

    if len(txt) <= 1: 
    return txt 
    else: 
    new_txt = txt[-1] + txt[1:-1] + txt[0] 
    return new_txt 

print front_back("code") 

我在函數中使用return,因爲這將是處理文本的正常方式,那就是要求你的問題。

相關問題