반응형
막힌 상황 : 3번째 출력에서 홀수 7이 들어있다.
# 빈 리스트 만들기
numbers = []
print(numbers)
# numbers에 값들 추가
numbers = [1, 7, 3, 6, 5, 2, 13, 14]
print(numbers)
# numbers에서 홀수 제거
index = 0
while index < len(numbers) :
if numbers[index] % 2 != 0 : # 홀수라면
del numbers[index]
index += 1
print(numbers) # 출력 결과물에 유일하게 홀수 7이 들어있다. [7, 6, 2, 14]
# numbers의 인덱스 0 자리에 20이라는 값 삽입
numbers.insert(0, 20)
print(numbers)
# numbers를 정렬해서 출력
numbers.sort()
print(numbers)
원인 발견
while index < len(numbers) :
if numbers[index] % 2 != 0 : # 홀수라면
del numbers[index] # 삭제
index += 1
먼저 수정전 인덱스 0과 1의 값은 1, 7이다.
인덱스 0의 값 1은 홀수이므로 del 되고
이 인덱스 0의 빈자리를 인덱스 1의 값 7이 대신하게 된다.
그런데, index의 값은 += 1이 되므로
값 7은 비교 대상에서 제외되므로 삭제되지 않은 것이다.
해결 : continue를 쓰면 된다.
while index < len(numbers) :
if numbers[index] % 2 != 0 : # 홀수라면
del numbers[index] # 삭제
continue
index += 1
모범답안
# 빈 리스트 만들기
numbers = []
print(numbers)
# numbers에 값들 추가
numbers.append(1)
numbers.append(7)
numbers.append(3)
numbers.append(6)
numbers.append(5)
numbers.append(2)
numbers.append(13)
numbers.append(14)
print(numbers)
# numbers에서 홀수 제거
i = 0
while i < len(numbers):
if numbers[i] % 2 == 1:
del numbers[i]
else:
i += 1
print(numbers)
# numbers의 인덱스 0 자리에 20이라는 값 삽입
numbers.insert(0, 20)
print(numbers)
# numbers를 정렬해서 출력
numbers.sort()
print(numbers)
반응형
'● 알고리즘, 자료구조 > 2021 알고리즘' 카테고리의 다른 글
투표 집계하기 : 사전, 리스트 (0) | 2021.05.31 |
---|---|
배열과 리스트의 차이 (0) | 2021.05.29 |
한화, 달러, 엔화 문제 : 함수, 반복문 (0) | 2021.05.28 |
온도 단위 바꾸기 문제. def, while (0) | 2021.05.28 |
while문으로 구구단만들기 (0) | 2021.05.27 |