while 반복문 실행순서 문의
168
작성한 질문수 9
pos = 0
while True:
if pos+1 > len(list):
break
if list[pos] in operator:
temp = list[pos-1] + list[pos] + list[pos+1]
#print('temp',temp)
del list[0:3]
#print('del',list)
list.insert(0,str(eval(temp)))
#print('list',list)
pos = 0
pos += 1
위 예제가 while 반복문은 세개 문단(?)으로 되어 있다고 한다면,
1) 1번 조건 확인 -> 2번조건 만족할때까지 계속반복 -> 3번 pos +=1 -> 1번조건 확인 반복순서인가요? 아니면
2) 1번 조건 확인 -> 2번조건 첫번째수행 -> 3번 pos +=1 수행 -> 1번 조건 확인 -> 2번조건 두번째수행 -> 3번 pos +=1 번 -> 다될때까지 반복 인가요?
2번 논리로 실행된다고 하면 2번째 문단 끝이 pos =0이고 3번째 시작이 pos +=1을 해주는게 이해가 안되서 1)로 작동하는거 같은데, 확실치 않아서 문의드립니다. 감사합니다.
답변 1
0
일단 위의 로직의 궁극적인 목적에 대해서 생각해보겠습니다. 예를 들어 list 에 ["10", "+", "20", "-", "5"] 가 있다고 가정을 할때 로직의 목표는 위의 리스트 값을 10 + 20 을 해서 10 의 자리에 넣을려고 하는겁니다. 그러면 ["30", "-", "5"] 가 되겠죠? 그리고 위의 반복문을 계속 돌아 최종적으로 [25] 가 남게 하기 위한 목적입니다. 그렇게 하기 위해서 일단 로직은 무한 루프로 while True로 돌게 됩니다.
먼저 이 로직은 현재 위치 pos + 1 이 총 리스트의 갯수 len(list) 보다 크면 종료해야 합니다. 이 말은 [25] 처럼 리스트의 갯수가 1개가 남았을때 종료된다는 이야기 인데 pos 는 항상 루프 마지막에 pos += 1 이 되기 때문에 루프를 한바퀴 돌았다면 pos는 최소 1이 되고 1+1 > len([25]) 의 조건에서 탈출하게 되어있습니다.
if list[pos] in operator:
구문은 입력이 정상적으로 되었다면 10 + 20 처럼 숫자, 연산자, 숫자의 모습으로 되어있을겁니다.(사실 엄밀히 따지면 이렇게 입력되지 않은 예외처리를 해야 좀 더 완성도 있는 로직이 됩니다만 여기선 생략되었습니다.)
말씀하신 2번째 문단 끝에서 pos=0 으로 초기화 하는 이유는 10, +, 20, -, 5 가 30, -, 5 로 리스트 값이 변하기 때문에 다시 처음부터 검색을 하기 위함입니다. 그러면 30, -, 5 에서 30은 숫자가 확실하니 3번째 문단에서 pos+=1 을 해도 상관이 없게 됩니다.
사실 이게 말이 더 어려운데 궁극적인 목적이 무엇인지를 잘 생각해봐야 합니다. 도움이 되셨으면 좋겠습니다.
38강 = 연산자 더하고 빼기
0
60
2
주석처리
0
116
1
함수의 파라미터값 msg
0
155
1
강의자료 이미지 안나옴
0
239
3
강의자료 질문 두번째
0
165
3
강의자료 관련 질문
0
116
1
파이썬 예외 처리 try / except 파일 처리 코드가 실행이 안됩니다.
0
235
1
소수 너무 어려워요
0
245
1
imagefont 함수 사용
0
239
1
pylint
0
357
1
add 함수 문의 ㅠㅠ
0
283
1
형식 문의드립니다.
0
209
1
변수 명을 왜 src, tar로 하셨는지 궁금합니다.
0
602
1
숫자야구 코드를 짜 봤는데 뭔가 이상합니다.
0
253
1
zsh: command not found: pylint
0
269
1
텔레그램 봇 만들기 코드 실행이 안됩니다 박사님..ㅠ
0
546
1
질문드립니다.
1
374
2
list.reverse() 출력에 대해서 질문있습니다.
1
433
1
데코레이터 함수 및 동작시간 질문입니다.~
1
323
2
opencv 사용하면서 궁금한점 (해상도)
1
781
1
질문드립니다.
1
299
1
아래 오류가 뜨면서 vscode가 컴파일이 되지 않는데.. 혹시 왜이럴까요?
1
445
1
크롤링안되는 현상 문의 드립니다.
1
421
1
파이썬 크롤링 관련 문의
1
277
1





