2016-10-31 13 views
-2

' a xxx yy '(空白が含まれています)を v_niz(['', 'a', '', '', '', 'x', 'x', 'x', '', 'y', 'y', '', ''])から印刷する必要があるタスクがあります。追加時に名前が定義されていません

def v_niz(plosca): 
    b = [] 
    for e in plosca: 
     if e == "": 
      b.append("") 
     if e == 'a' : 
      b.append(a) 
     if e == 'x': 
      b.append(x) 
     if e == 'y': 
      b.append(y) 
    return b 

が、私はそれが名前が「」に定義されていないと言っているプログラムを実行しようとすると:私のコードは、これまでのところです。

+2

は、うーん... 'A'は確かに* *定義されていません。それについては 'x'と' y'もありません。 – deceze

+1

'' a''、 '' x''、 '' y''を使わないのはなぜですか? –

+0

また、 'plosca'を再構築するだけではありませんか? 'def v_niz(plosca):return plosca'は与えられた例で同じことをします。 – deceze

答えて

3

まず、b = []で始める場合は、別のリストを作成するだけです。あなたは文字列を作成しようとしている場合は、あなたが持っている必要があります。

b = "" 

そして、それの最後に追加して、あなたは次の構文を使用します。

b = b + "a" 
# or the shorthand: 
b += "a" 

今、あなたの方法のロジックと。あなたが追加していると思うものを追加していません。たとえば:

b.append(a) 

はあなたのリストbの最後にいくつかの変数aを追加しようとします。

# for a list use 
b.append('a') 
# for a string use: 
b += "a" 

同じxyのために、あなたは彼らの周りに引用符を使用する必要が行く:'x''y'あなたの文字または文字列'a'を追加したかったようです。それ以外の場合はあなただけbで、基本的に変更なしにのぼるたbの最後に空の文字列を追加している、あなたが実際に文字列にスペースを配置する必要があり

b.append("") 

:また、あなたがのためにスペースを追加するつもりはありません。あなたは試してみてください:より多くのようなあなたのコードの大まかな骨格が行くべきすべてのこれらの変更で

# for a list use 
b.append(" ") 
# for a string use: 
b += " " 

ファクタリング:

def v_niz(plosca): 
    b = "" 
    for e in plosca: 
     if e == "": 
      b += " " 
     if e == 'a' : 
      b += 'a' 
     # ... 
    return b 
+0

私は自分のコードが正しいかどうかを確認するためのテスターも与えられましたが、変更があってもコードはテスターを通過しません。私は何をすべきかわからない。 –

+1

実際には、 'b'をリストとして保持し、最後に' join 'する方が良い。それらが不変なので、文字列に追加することはできません。さらに、 '{'a'、 'x'、 'y'}の' if e 'を使ってください: ' –

+0

しかし、私は実際に' return' '.join( '' x ==' 'else x for ploscaの場合) ' –

関連する問題