python : if문이 작동을 안해요...(리스트 순서대로 비교 코드)

조회수 1703회

안녕하세요.. 취미로 프로그래밍을 배우는 일반인 입니다. 아래의 a와 b의 리스트를 순서대로 비교하는 코드를 짜보았는데.. 일단은 5번까지만 비교해보려고 합니다...

이 코드의 문제는 if문을 건너서 바로 else로 가고.. 제 의도와는 다르게 프로그램이 동작하더라구요..

http://www.pythontutor.com/visualize.html#mode=edit

에서.. 프로그램을 돌려보았는데... if문을 바로 건너뒤고 else로 가서는 print('2ss')를 출력하는것을 확인하였습니다.

K = 0
numS = 0
a = [1,5,6,6,6,1,6,5,1,5,6,7,8,2,7,4,7,2]
b = [1,5,6,6,7,3,6,2,4,6,1,3,5,6,7,2,4,5]
if a[numS:] == b[numS:] :
    print('3ss')


while K < 5 :
    K = K + 1
    numS = numS + 1
    if a[numS:] == b[numS:] :
        print('1ss')  
    else :
        print('2ss')

혹시.. 이 코드를 어떻게 수정해야 하는지 조언을 주시면 감사하겠습니다.

제 의견으로는 a[0:] 은 되지만 a[numS:] 와 같은 표현은 안되는것 같은데.... 후,, 모르겠어요.. 전문가님들의 조언 부탁드립니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • a[numS:]는 a[numS]부터 끝까지라는 뜻입니다. numS가 2일 때, [6,6,6,1,6,5,1,5,6,7,8,2,7,4,7,2]겠네요

    혹시 원하시는게 a와 b의 리스트의 각 엘리먼트를 순서대로 비교하는 것이라면

        if a[numS:] == b[numS:] :
            print('1ss')  
        else :
            print('2ss')
    

    가 아니라

        if a[numS] == b[numS] :
            print('1ss')  
        else :
            print('2ss')
    

    로 쓰셔야 할 것 같습니다.

    추가적으로,

    1. K와 numS가 코드 처음부터 끝까지 완벽히 동일한 숫자라 개인적으로 변수 두개로 쓰실 필요는 없어보이고,

    2. while루프가 시작하기 전에 변수가 +1 되어 a[0]과 b[0]을 비교할 수가 없는 상태여서,

    최종적으로 코드는

    numS = 0
    a = [1,5,6,6,6,1,6,5,1,5,6,7,8,2,7,4,7,2]
    b = [1,5,6,6,7,3,6,2,4,6,1,3,5,6,7,2,4,5]
    if a[numS:] == b[numS:] :
        print('3ss')
    
    while numS < 5 :
        if a[numS] == b[numS] :
            print('1ss')  
        else :
            print('2ss')
        numS = numS + 1
    

    가 되어야 할 것 같습니다.

    (참고: 박응용 - <점프 투 파이썬> 2장 3. 리스트 자료형)

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

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

(ಠ_ಠ)
(ಠ‿ಠ)