2016-10-31 2 views
-2

v_niz(['', 'a', '', '', '', 'x', 'x', 'x', '', 'y', 'y', '', '']) 목록에서 ' a xxx yy ' (공백 포함)을 인쇄해야하는 작업이 있습니다. 내 코드는 지금까지 있습니다 :추가하는 동안 이름이 정의되지 않았습니다.

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 

을하지만 난이 프로그램을 실행하려고하면 그것은 이름이 'A'을 정의되지 않은 것을 말한다.

+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) ' –

관련 문제