and란?
앞 조건과 뒤의 조건이 모두 True이어야만 True를 반환한다.
따라서 만약 while문의 조건으로 넣었다면, while문은 True인 조건을 넣어야 실행되는 것이므로,
조건이 True인가를 따지는 것이 중요하다.
그런데, 만약 앞 조건이 False라면 굳이 뒤 조건을 따지지 않아도 이는 False이기에, 뒤 조건을 보지 않고 넘어가게 된다.
결과적으로, '에러를 발생시킬 수도 있는' 중요한 조건은 앞에 써야 한다는 것이다.
파이썬 코드로 예를 든다면,
a = [1, 2, 3, 4, 5]
sum = 0
j = 0 ## index를 나타낼 변수
## 오류 발생
while a[j]>0 and j<len(a):
sum += a[j]
j += 1
인덱스를 나타내는 j는 계속 1씩 증가되고, sum이라는 변수에 리스트 a의 원소들을 하나씩 추가하는 구문인데,
만약 위의 코드처럼
j<len(a) : 인덱스가 리스트를 넘어가는지
를 먼저 조사하지 않고,
a[j]>0 : j 인덱스의 값이 0보다 큰지
를 먼저 조사한다면
인덱스인 j가 a의 길이를 넘어간 경우,
a[j]를 조사할 수 없기 때문에(index out of range error)
오류가 발생하게 된다.
따라서, 이러한 에러가 뜰 수 있는 조건을 먼저 조사하는 밑의 코드처럼 작성해야 한다.
while j<len(a) and a[j]>0:
sum += a[j]
j += 1
'AI' 카테고리의 다른 글
시간복잡도 - (유클리드 호제법, 에라토스테네스의 체) (0) | 2024.07.09 |
---|---|
리스트 요소 곱하기 (0) | 2024.05.20 |
한 줄 if문 (python) (0) | 2024.05.20 |