배열 순회, 예외처리
- 배열순회 방법
1. 기본 for문
arr = [1,2,3,4,5]
for item in arr :
print(item)
2. 인덱스를 사용한 for문
arr = [1,2,3,4,5]
for i in range(len(arr)) :
print(arr[i])
3. enumerate 사용(인덱스와 값을 동시에 얻을 때 유용)
arr = [1,2,3,4,5]
for index, value in enumerate(arr):
print(index, value)
4. list comprehension
arr = [1,2,3,4,5]
squared = [x**2 for x in arr]
print(squared)
- 예외처리
1. 기본
try:
# 시도할 코드 블록
x = 1 / 0
except:
# 예외가 발생하면 실행할 코드 블록
print("ZeroDivisionError가 발생했습니다.")
2. 일반적인 예외처리
try :
x = 1 / 0
except Exception as e :
# 모든 예외를 처리할 때 사용
print(f"예외가 발생했습니다.:{e}")
3. 여러 예외 처리
try :
x = 1 / 0
except ZeroDivisionError:
print("ZeroDivisionError가 발생했습니다.")
except ValueError :
print("ValueError가 발생했습니다.")
4. else와 finally 블록 사용
try :
x = 10 / 2
except ZeroDivisionError:
print("ZeroDivisionError가 발생했습니다.")
else :
# 예외가 발생하지 않은 경우 실행
print("예외가 발생하지 않았습니다.")
finally :
# 예외 발생 여부와 상관없이 항상 실행
print("이 블록은 항상 실행됩니다.")
주어진 배열에서 연속적인 숫자는 하나만 제거하되 원소의 순서를 유지하여 반환하는 문제
for문을 활용해서 배열을 순회하도록 하였고,
try except를 활용해서 에러발생 시 다르게 처리하도록 작성했다.
GPT는 빈 배열인 경우 빈 배열을 반환하고,
첫 번째 원소를 미리 answer 리스트에 추가하여 반복문에서 처음 원소를 따로 처리하지 않게 하였다.
또, 예외처리로 마지막 원소를 비교하는 대신 반복문을 1부터 시작하고, 이전 원소와 비교하는 방식으로 변경하였다.
이를 통해 예외처리가 필요하지 않게 되며 코드의 가독성이 향상된다.
반복문의 범위를 range(1,len(arr))로 변경하여 첫 번째 원소를 제외한 나머지 원소들을 처리한다.
이렇게 되면 첫 번째 원소는 이미 answer에 추가되었기 때문에 별도의 비교가 필요없다.
여기서, 첫 번째 원소를 미리 추가하게 되면 첫 번째 원소는 별도의 비교가 필요 없게 되며,
arr를 조건문에서 미리 해결할 수 있다는 것을 알게 되었다.