2017-11-02 4 views
2

私のプログラミングクラスでは、文字列と2文字を引数として取るプログラムを作成する必要があります。最初の文字が文字列に表示されるたびに、2番目の文字に置き換えられます。私は最終的な文字列をリストにすることでこれを行うことができます。しかし、私たちの教授は、リストではなく文字列であることを望んでいると述べています。以下に示すコードは、最終結果がリストに表示されるようにするために私がプログラムを動作させるために使用したコードです。ループ中に文字列同士をどのように追加するのですか?

def str_translate_101(string, x, y): 
    new_list = [] 
    for i in string: 
     if i == x: 
      new_list.append(y) 
     if i != x: 
      new_list.append(i) 
    return new_list  

は、私は1つを作ってみましたところ、それは出力文字列のだろうが、それは最初の文字だけを返すと、プログラムが

def str_translate_101(string, old, new): 
    for i in string: 
     if i == old: 
      return new 
     else: 
      return i 
(理由は「リターン」の起こる私は仮定していた)停止します

私は印刷機能を使用しようとしましたが、その機能を実行したときに何も出力されなかったので、どちらも役に立ちませんでした。

def str_translate_101(string, old, new): 
    for i in string: 
     if i == old: 
      print(new) 
     else: 
      print(i) 

任意の助けいただければ幸いです。 結果がどのように動作するかを例それが動作します。このようなものです:

str_translate_101( 'abcdcba'、 'A'、 'X')---> 'xbcdcbx'

+0

文字列(たとえば「a」)を文字列に追加するには( 'result')、' result + = "a" "と書くことができます。これは効率的ではありませんが動作します。 –

+1

ビルトインの 'string.replace()'はそれほどです – MrJLP

答えて

3

あなたはへjoinを使用することができます代わりに、あなたは、単にすることができ、リスト内の文字を格納する、

def str_translate_101(string, x, y): 
    new_list = [] 
    for i in string: 
     if i == x: 
      new_list.append(y) 
     else: 
      new_list.append(i) 
    return ''.join(new_list) 

するか、最も簡単な解決策は以下のようになりワンライナー

str_tranlsate_101 = str.replace 
+0

join関数がそのトリックを行うようです。ありがとう –

0

を使用します。文字列にリストをマージ空文字列を宣言し、 'if'ブロックで文字列に文字を追加するには、拡張された '+ ='演算子を使用します。例えば。 if i == xの場合: concat_str + = y

戻り値は、基本的にforループから抜け出し、関数が呼び出された場所に戻ります。これは、目的が1つしかないため、これまで以上にコードを処理する必要はなく、単に関数が呼び出された場所に戻るだけです。

関連する問題