2016-10-20 1 views
0

목록의 특정 정수를 문자열로 변환하려고하는데 정수를 문자열로 변환하는 것과 관련된 오류가 계속 발생합니다. str()을 시도했지만 문제를 해결하지 못하는 것 같습니다. 나는 내가 뭔가 잘못하고있는 것 같아. 그것을 조금 변경 나는 또한 시도했다파이썬을 사용하여 목록에서 정수를 문자열로 변환하는 데 문제가 발생했습니다.

TypeError: not all arguments converted during string formatting 

하지만 같은 문자열을 받고 포맷 오류 계속 :

intList = [1,2,3,4,5] 

def fizzbuzz(intList): 

    for e in intList: 
     if (e % 3) ==0: 
      e='Fizz'.join(str(e) for e in intList) 
     if (e % 5) ==0: 
      e='Buzz'.join(str(e) for e in intList) 

print fizzbuzz (intList) 

내가이 오류 :

def fizzbuzz(intList): 

    for e in intList: 
     if (e % 3) ==0: 
      intList.append(str('Fizz')) 
     elif (e % 5) ==0: 
      intList.append(str('Buzz')) 
     else: 
      intList.append(e) 

print fizzbuzz (intList) 

를 다음과 같이 내 코드는 문자열 오류를 수정하는 또 다른 방법을 생각할 수 없습니다. 나는 주변을 수색하여 %의 문제 일 수 있다고 생각합니까?

답변

0

잘못 여기에 몇 가지가 있습니다 : 나는 당신의 기능에 정의 된 매개 변수하고 나중에 기능에 공급 실제 객체에 대해 다른 이름을 사용하는 것이 좋습니다 모든

  1. 첫째. 이것은 (초보자로서), 우리 (코드 디버깅을 도우려고 노력하는), 그리고 미래에 일하거나 코드 작성하는 사람들에게 혼란을 피하는 데 도움이 될 것입니다.
  2. 귀하의 목표는 일부 정수 요소를 문자열로 변환하는 것이지만 함수에 사용 된 메서드는 각 요소를 평가 한 다음 조건 (if 문의)을 기반으로합니다 에 추가 문자열 ('Fizz' 또는 '버즈')를 입력하거나 에 추가 요소 (e)를 추가하십시오.
  3. 당신이 점점 오류가 인해로 그것을 처리하는 방법을 알고하지 않는 목록의 이러한 추가 문자열 요소에 도달 루프 : if ('Fizz' % 3) ==0:
    는 나머지 연산자는 정수를 처리 할 수 ​​있습니다; 문자열이 아닙니다.

이렇게하면 코드를 수정할 충분한 통찰력을 얻을 수 있습니다. 그렇지 않다면 우리는 여기에 있습니다!

0

문제 때문에이 부분의 코드이다 :

if (e % 3) ==0: 
    e='Fizz'.join(str(e) for e in intList) 
if (e % 5) ==0: 
    e='Buzz'.join(str(e) for e in intList) 

e 경우 3 균등하게 나누어 다음 e 문자열로 변경된다. 그 다음에 if 문은 %e (문자열)을 5 씩 시도합니다. 파이썬에서 문자열이있는 %은 숫자와 완전히 다른 값을 가지므로 (값을 대체합니다) 오류 메시지가 그에 관련됩니다.

해결책은 Fizz 또는 Buzz을 포함하는 문자열에 대해 다른 변수 이름을 사용하는 것입니다.

코드에 다른 문제가 있습니다. 당신이 그들과 마주 칠 때 다시 물어보십시오.