while에서 받은 정수를 append하지 못합니다...

조회수 593회
while True:
    listfilter = list()
    liststart = list()
    n1 = len(liststart)
    n2 = len(listfilter)
    print("3의 배수와 5의 배수를 제외한 정수의 개수를 구하는 프로그램입니다. 정수를 하나씩 계속 입력하십시오. 0를 입력하면 종료됩니다.")
    ans = input()

    if int(ans) != 0 :
       if int(ans)%3 == 0 or int(ans)%5 == 0 :
           listfilter.append(ans)
       else:
           liststart.append(ans)
    else:
       print("총",n1,"개의 정수가 입력되었고 3의 배수와 5의 배수를 제외한 정수의 개수는",n1-n2,"개 입니다.")
       break

input에서 받은 정수중 3의 배수와 5의 배수를 제외한 정수의 수를 세어주는 코드를 작성했는데 정수를 입력하면 다시 물어봐주고 0을 눌렀을 때 반복에서 빠져나오고 마지막 print까지 해주는데 정수들을 list에 append하지 못해서 list의 개수를 무조건 0으로 인식합니다. 무슨 실수를 저지를 걸까요.

  • 소스코드의 인덴테이션 부터 잘 해주시겠습니까? 파이썬에선 인덴테이션(들여쓰기)이 매우 중요합니다. nowp 2020.10.7 13:16
  • 처음이라 아직 미숙합니다. 죄송합니다. 알 수 없는 사용자 2020.10.7 14:20
  • 복사해서 붙이는데 있어서 문제가 생긴 것 같습니다. 정확하게 질문을 드리지 못한 점 대단히 죄송합니다. 알 수 없는 사용자 2020.10.7 14:40

1 답변

  • 실수라고 하기엔 최초 문제와 달랐던 부분도 있네요.

    참고 부탁드리겠습니다.

    listfilter = list()
    liststart = list()
    
    while True:
        str = '''3의 배수와 5의 배수를 제외한 정수의 개수를 구하는 프로그램입니다. 정수를 하나씩 계속 입력하십시오. 0를 입력하면 종료됩니다.
    >> '''
        ans = input(str)
        liststart.append(ans)
    
        if int(ans) != 0 :
            if int(ans) % 3 == 0 or int(ans) % 5 == 0 :
                listfilter.append(ans)
        else:
            n1 = len(liststart)
            n2 = len(listfilter)
            print(f"총 {n1} 개의 정수가 입력되었고 3의 배수와 5의 배수를 제외한 정수의 개수는 {n1-n2} 개 입니다.")
            break
    
    • else문에 len(list)를 넣으면 이전에 했던 제거들이 적용되는 것인 걸까요? 알 수 없는 사용자 2020.10.7 15:52
    • 아뇨.... 이부분에 대해서 답변드리기에는 좀 제한될거같고..... 비교해보시고.. 다른 이유에 대해서 공부해보시는게 좋을거 같습니다..... 김호원 2020.10.7 16:07
    • 반복하면서 터득하겠습니다. 감사합니다! 알 수 없는 사용자 2020.10.7 16:55

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)