티스토리 뷰

공부한거/Python

제어문 (3)

tl;dr 2024. 7. 15. 20:17

부울값 이외의 값

 if 문에서는 조건식에 부울값(비교 연산자나 부울 연산자 등)을 지정해서 처리의 흐름을 제어할 수 있다. 조건식에는 비교 연산자뿐만 아니라 값을 직접 지정할 수도 있다. 파이썬에서는 조건식 위치에 값이 기술되면, 그 값에 따라 조건의 성립 여부를 결정하는 규칙이 정해져 있다. 규칙은 다음과 같다.

  조건식이 성립하지 않는다 조건식이 성립한다
수치 0 0이 아닐 때
문자열 빈 문자열 "나 "" 왼쪽 항의 조건 이외일 때
리스트 빈 리스트 [ ] 왼쪽 항의 조건 이외일 때
튜플 빈 튜플 ( ) 왼쪽 항의 조건 이외일 

 

a = 3
if a:
    print("a is not zero")
else:
    print("a is zero")
#a is not zero
a = 0
if a:
    print("a is not zero")
else:
    print("a is zero")
#a is zero

 

변수 a에 3이 저장돼 있으면 첫 print 문이 출력된다. 즉, 조건식의 위치에 기술한 "a"는 True로 해석되는 것을 알 수 있다. 한편, 변수 a에 0을 저장하면 else 다음의 print 문이 출력된다. 0은 False로 해석되는 것이다.

 

bool() 함수를 사용하면 True와 False 둘 중 어떤 것으로 해석되는지 쉽게 알아볼 수 있다.

>>> bool(0.0)
False
>>> bool(3.14)
True
>>> bool({})
False
>>> bool({1,2,3})
True
>>> bool("hello")
True
>>> bool("")
False

 

삼항 연산자

 if else를 사용하면 조건식에 따라 처리를 바꿀 수 있다. 조건에 따라서 대입하는 값을 선택하려면 다음과 같이 기술한다.

if a > 0:
    x = 10
else:
    x = 20

 

a가 0보다 클 때는 x에 10을 대입하고 그렇지 않으면 20을 대입한다. 양자 택일이다. 

양자택일이다

이러한 간단한 if else는 더욱 쉽게 기술하는 방법이 준비돼 있다.

x = 10 if a > 10 else 20

 얼핏보면 "알기 어려운데..."라고 느낄지도 모른다. 이것은 파이썬을 만든 사람이 영어권의 사람이기 때뭉닐지도 모른다. 영어권에서는 결론을 먼저 말하는 게 일반적이다. 이번에는 x에 10을 대입함을 전제로 그 조건(a > 0)을 보충한다. 마지막으로 조건이 성립하지 않으면 부사적으로 추가한다.

 

C등 다른 언어에서는 이렇게 기술해서 좀 더 헷갈리는 듯 하다.

x = (a>0) ? 10 : 20

 

while

  while 문은 반복(루프) 처리를 하기 위한 명령이다.

while 조건식:
    명령1
    명령2
명령3

 조건식이 True인 동안, 정해진 블록(위의 예에서는 명령1과 명령2)을 반복 실행한다. 조건식이 False가 되면 루프를 빠져나와 다음 명령(위의 예에서는 명령3)으로 간다.

>>> counter = 0
>>> while counter < 3:
    print(counter)
    counter += 1
#0
#1
#2

 이 예에서는 먼저 변수 counter를 0으로 초기화한다.  counter가 3보다 작은 동안, while 문의 블록이 실행된다. 이 예에서는 counter 값을 print로 출력하고, counter 값이 1 증가한다. 즉, 루프가 1회 실행될 때마다 counter가 1 증가한다. counter 값이 3이 되면 조건식이 Flase가 되므로 루프 실행이 끝난다. 각 교과의 평균점수를 구하는 예를 while 문으로 다시 작성한다.

>>> total = 0
>>> index = 0
subject = (78, 95, 68, 62)
while index < len(subject):
   total += subject[index]
   index += 1
   
>>> average = total / len(subject)
>>> average
#75.75

 len()은 리스트나 튜플의 요소 수를 반환하는 함수다. 위의 예에서는 요소가 4개이므로 len(subject)은 4이다. index가 4보다 작은 동안 while 문이 실행된다. subject[index]에서 순서대로 점수를 꺼내 total에 추가한다. 또, index를 1씩 증가하고 있다. while 문을 빠져나간 후에 합계 점수인 total을 요소 수로 나눠 평균점수를 구한다.

만약 다음처럼 잘못 썻다고 하자. 어떻게 될까?

>>> while index < len(subject):
    total += subject[index]
    total += 1

index 값은 0인 채 바뀌지 않는다. 즉, while 문은 무한 반복하게 되고, 중단하려면 파이썬 쉘을 종료할 수 밖에 없다.

 

'공부한거 > Python' 카테고리의 다른 글

제어문 (4)  (0) 2024.07.16
제어문(2)  (0) 2024.07.15
제어문(1)  (0) 2024.07.06
print 함수  (0) 2024.07.01
파이썬 기초 - Sequence 확장  (0) 2024.07.01
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함