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')
로 쓰셔야 할 것 같습니다.
추가적으로,
K와 numS가 코드 처음부터 끝까지 완벽히 동일한 숫자라 개인적으로 변수 두개로 쓰실 필요는 없어보이고,
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. 리스트 자료형)
댓글 입력