2017-03-29 28 views
1

ユーザー入力時に文字列内の重複を削除しようとしています。ここに私のコードです:私は、コード、および入力文字列のバナナを実行すると共通文字または重複文字列を削除する

userinput = input("Enter a word:") 
def duplicates_removal(x): 
     for i in range(len(x)-1): 
      if x[i] == x[i +1]: 
        return duplicates_removal(x.replace(x[i], ' ')) 
     return x 

print(duplicates_removal(userInput)) 

、それは削除されません重複して出力バナナを生成します。コードに欠陥がありますか?また、私は文字列操作の学習を始めて以来、このための組み込み関数を使用したくないです。

Input: Bananas 
Output desired: Bans 
+1

は、あなただけの前の文字( 'X [i]を== X [I + 1]')それはだな欠陥に各文字を比較しています。 – dirkgroten

+0

あなたは「私はこれに組み込み関数を使用したくない」と言っていますが、組み込みの 'range'と' len'関数と 'str.replace'メソッドを使用しています。' input'と '印刷する。 –

+0

これを行うにはいくつかのより良い方法があります。あなたの再帰的なアプローチをいくつかの小さな変更(および追加の機能はありません)で動作させることは可能ですが、結果コードは非効率的であり、特に読むのは簡単ではありません。私はそれが楽しい "コードゴルフ"パズルを作ったと思うが、この種のことは初心者がPythonを学ぶのに最適な方法ではない。 –

答えて

0
def duplicates_removal(x): 
    l = [] 
    for each in x: 
     if each not in l: 
      l.append(each) 
    return "".join(l) 
+4

@ TigerhawkT3 OPはこのタスクに最適なアルゴリズムを要求していません。彼らは、既存のコードがなぜ彼らが期待することをしないのか理解したい。そして、彼らは確かに誰かのためにコードを書くように頼んでいません。 –

関連する問題