2017-05-01 5 views
-1

誰かが私を助けることができますか?私は各文字が 'x'であることを確認しようとしています。それは動作していません! 私は、(必需品)xxxを返さなければならない関数を作成しました。もし私がリストに 'hello'を置くと、この関数は 'xxxxx'を返すようにします。python関数が動作していません

def encriptar(lletra): 
    lletra = 'x' 
    return lletra 

letra = [input("Introduce la cadena: ")] 
x=0 

for x in range(0,len(letra)): 
    letra[x]=encriptar(letra[x]) 
    print(letra[x]) 
    x+=1 

print(letra) 
+1

質問や疑問はありますか? – manelfp

+1

'print( 'x' * len(input(" Enter word ")))'。達成する方法の一つ。 –

+1

これは効果があるとは思わないが、forループはxを更新して処理するので、ループ内で自分自身をインクリメントする必要はありません。 – SpoonMeiser

答えて

1

letra = [input("Introduce la cadena: ")]は何を返さないことですあなたは期待しています。文字列である1つの要素のリストを取得します。とにかく、文字列はPythonでは変更できません。

迅速かつ簡単な修正は、文字のリストに文字列を変換するために、次のようになります。今、あなたが変更可能なリストを持っているので

letra = list(input("Introduce la cadena: ")) 

し、その中に各文字を置き換えることができます。

for x in range(0,len(letra)): 
    letra[x]=encriptar(letra[x]) 
    print(letra[x]) 

印刷する前に参加してください:

print(''.join(letra)) 
+0

うわー!ありがとう、私の多くを助けた! – Abdullah

0

ユーザー入力を文字列として取得し、それを反復する代わりに、ユーザー入力の文字列をリストに入れて繰り返し処理します。

letra = [input("Introduce la cadena: ")] 

ユーザーがタイプhello場合、これはあなたが["hello"]letraセットになってしまうことを意味します。つまり、1つの項目のリスト。その項目は文字列です。したがって、一度に1文字ずつではなく、文字列全体をencriptarに渡します。代わりに

は、実行します。あなたが代わりに既存のものを更新するのではなく、新しい文字列を構築する必要がありますので、

letra = input("Introduce la cadena: ") 

あなたは、その後、文字列は不変ある問題に遭遇します。

new_chars = [ 
    encriptar(c) 
    for c in letra 
] 

し、そのリストから新しい文字列を作成します:あなたは簡単にリストの内包表記を使用して文字のリストを構築することができ

問題で

letra = "".join(new_chars) 
関連する問題