2016-11-09 86 views
2

我目前被困在一個問題中,我需要檢查string1中的字母"a"的每個實例並將其替換爲substring用一個子串替換一個字符串

例如可以說,substring"dragon",如果原始string1"apple",我需要回到"dragonpple"

到目前爲止,我有我的企圖是:

def (string1, substring): 

    new_string= " " 

    for letter in string1: 
      if letter ! = "a": 
       new_string.append(letter) 
      elif letter = "a": 
       a = substring 

我真的不知道如何組織這個,但是這是我的總體思路的過程。我不知道如何刪除字母"a"並將其替換爲substring,而不必拆散字符串本身。

另外我不能使用索引或.remove方法。將不勝感激的幫助。

+0

如何做'string1.replace(「a」,substring)'? – yper

回答

5

這裏有很多問題;讓我們打破他們不改變你原來的代碼太多:

  • 你的函數定義缺少名稱,正確地定義一個名字吧。例如:

    def replace_a(string_a, substring): ... 
    

    我猜這可能是一個複製粘貼遺漏。

  • if letter ! = "a":SyntaxError! =不會被解釋爲!=(但作爲兩個獨立的運營商!=),不幸的是,需要修理了。
  • elif letter = "a":是另一個SyntaxError; 賦值語句不應與平等檢查混淆,即=與使用==不相似。
  • new_string.append(letter)TypeError;沒有爲字符串定義方法append,字符串是不可變的並且追加是使對象變異的方法。 append可在list s上找到。
  • a = substring沒有做太多:-(。分配給a,然後簡單地不使用它。
  • 最後,你不返回任何。即使你的函數正確創建的字符串, 。不能拿回來,因爲你不使用return聲明
  • 你可以考慮

一種方法是使用字符串列表和變異是,列表是可變的,從而發生變異,你心中的願望呢。 ,你在最後列出了join並且從裏面的所有字符中返回一個字符串:

def replace_a(string1, substring): 
    new_string= [] 
    for letter in string1: 
     if letter != "a": 
      new_string.append(letter) 
     elif letter == "a": 
      new_string.append(substring) 
    return "".join(new_string) 

這會產生你想要的結果。

如果您不能使用list,變異,然後join你可以採取逐步建設一個新的字符串:

def replace(string1, substring): 

    new_string= "" 

    for letter in string1: 
      if letter != "a": 
       new_string += letter 
      elif letter == "a": 
       new_string += substring 
    return new_string 

這再次表現像以前list基礎功能,但依靠+=它創建通過將new_string中的舊值與lettersubstring基於條件加入新字符串。由@yper的意見建議但擊敗解釋如何你企圖沒有實現你所追求的點


當然,.replace對字符串會做的伎倆。

你很親密,但缺少一些基本的東西,我建議你看看Python Tutorial。 :-)

+0

嘿,謝謝你的幫助!儘管我還有其他幾個問題。我敢肯定,我不允許使用你在這裏作爲我的代碼的一部分的「連接」功能,因爲我還沒有知道它。有沒有辦法讓代碼以「return new_string或string1?」結尾? – Jessica

+0

夠了@Jessica。我已經更新了我的答案,以包含根本不涉及列表的解決方案。希望它能幫助你:-) –

+1

我知道你在這個意義上並不意味着功能,但是說「一種功能性的方法是使用字符串列表並進行變異......」正在使我的頭部抽搐。 +1爲好的解釋。 –

相關問題