조건문
관련된 내용
if문
if ~ else
판단의 결과에 의해 코드의 실행 여부를 결정할 경우 if 문(statement)을 사용할 수 있습니다. 식 1에 나타낸 것과 같이 키워드 if 다음에 작성된 조건이 True일 경우 그 문에 종속된 하위문을 실행합니다. if와 조건이 메인문으로 그 끝을 콜론(:)으로 나타내고 개행 후 4칸 들여쓰기로 작성된 하위문들을 포함하여 블럭을 구성합니다. if의 조건이 False 일 경우 이 블럭은 종결되며 옵션으로 첨가되는 else 문 블럭이 실행됩니다. 물론 else 문이 없는 경우 다른 명령이 실행됩니다.
if 조 | 건: | #메인문1 | (식 1) |
본 | 문 1 | #하위문1 | |
else | : | #메인문2 | |
본 | 문 2 | #하위문2 |
식 1에서 if 문의 실행여부는 다음과 같이 조건의 결과에 따라 결정됩니다.
조건 = True | → 하위문1 실행 |
조건 = False | → 하위문 2 실행 |
이 구문의 기본 형태는 두 개의 블럭으로 구성되어 있지만 if문에 따라오는 else 문은 생략할 수 있습니다. 이 구문의 흐름은 그림 1과 같이 나타낼 수 있습니다.
입력한 수가 짝수 또는 홀수인지를 결정하는 코드를 if 문을 적용하여 작성합니다. 먼저 임의의 수를 생성하기 위해 numpy.random 모듈의 randint()
함수를 사용합니다. 이 함수는 다음과 같이 지정한 범위에서 임의의 정수를 생성합니다.
- numpy.random.randint(a, b, size=n)
- a, b, n은 스칼라
- [a, b]의 범위에서 지정한 크기(n)의 랜덤수를 반환
- 크기 size
- 정수 한 개일 경우 벡터가 생성
- (r, c)와 같이 나타낼 경우 r행과 c열을 가진 행렬로 반환
- 기본값은 1
import numpy as np
np.random.randint(1, 10)
3
생성한 임의의 정수를 2로 나눈 나머지가 0일 경우 짝수, 아닌 경우 홀수로 결정하는 코드는 다음과 같습니다.
x=np.random.randint(0, 10) #① if x%2==0: #② print(f"{x}는 짝수") #③ else: #④ print(f"{x}는 홀수") #⑤
2는 짝수
위 코드는 실행과정은 다음과 같습니다.
- ① : 랜덤수 x를 생성
- ②: if 조건문으로 ③의 하위문을 가짐. 즉, if 블럭의 주문장(main sentence)
- ③: ②의 조건이 True 일 경우 실행
- ④: ②의 조건이 False 일 경우 작동되는 블럭의 주문장(main sentence)
- ⑤: ④의 하위문으로 ②의 조건이 False 일 경우 실행
다음은 randint()
함수에 의해 생성되는 랜덤수와 사용자가 입력한 수 각각에 짝수 또는 홀수 결정하고 두 수에 대한 결정이 같으면 "good", 다르면 "again"을 반환하는 코드들을 작성합니다. 이 코드에서 사용자가 수를 입력하기 위해 내장함수인 input([prompt])을 사용합니다. 이 함수는 다음과 같이 사용자가 입력한 수를 string 형의 객체로 생성합니다.
- input([prompt])
- 실시간으로 값을 입력할 수 있는 내장함수
- 표준입력 함수로서 이 함수의 실행으로 사용자에 의한 자료의 입력 창이 생성됩니다.
- prompt는 입력을 위한 설명 문구이며 생략 가능
- 결과는 문자형입니다.
input("[1,10]사이의 수를 입력하세요?")
[1, 10]사이의 수를 입력하세요? _____________ '3'
x=np.random.randint(1, 10) if x % 2 ==0: result1=0 else: result1=1 y=input("[1,10]사이의 수를 입력하세요?")
[1,10]사이의 수를 입력하세요? 5
y=int(y) if y%2==0: result2=0 else: result2=1 if result1==result2: print("good!") else: print("again!")
good!
x
7
다음은 주어진 값이 3의 배수인지를 결정하는 것으로 else 문을 생략할 경우 어떠한 결과를 반환하지 않지만 구문 에러가 발생하지는 않습니다.
x=29 if x % 3==0: print(x,": 3의 배수입니다.") else: print(x, ": 3의 배수가 아닙니다.")
29 : 3의 배수가 아닙니다.
x=29 if x % 3==0: print(x,": 3의 배수입니다.") print("else 문은 생략할 수 있습니다.")
else 문은 생략할 수 있습니다.
elif 문
조건이 False일 경우 실행되는 else 문 내에 다른 if 문을 포함하여 여러개의 결정을 위한 조건문(들)을 작성할 수 있습니다. 다음은 주어진 수를 양수, 음수, 0으로 구분하기 위한 코드입니다.
x=-7 if x > 0: print(str(x)+"는 양수입니다.") else: if x < 0: print(str(x)+"는 음수입니다.") else: print("zero")
-7는 음수입니다.
위 코드와 같이 결정을 위해 다양한 조건이 필요한 경우 else 문내에 if ~ else 문을 포함하는 대신 식 2와 같이 elif 문으로 사용할 수 있습니다.
if 조건1: 본문1 elif 조건2: 본문2 elif 조건3: 본문3 ⋮ else: 본문n | (식 2) |
위 코드를 elif 문을 사용하여 다시 작성합니다.
x=-7 if x > 0: print(str(x)+"는 양수입니다.") elif x < 0: print(str(x)+"는 음수입니다.") else: print("zero")
-7는 음수입니다.
nest if 문
위의 경우와는 다르게 if 문에 부차적인 조건이 작용되는 경우 if 문 내에 다른 if 문 또는 if ~ else 문을 삽입하여 나타낼 수 있습니다. 이러한 형식을 nested if 문이라 합니다.
위의 예인 수를 양수, 음수, 0으로 구분하기 위한 코드를 다음과 같이 nested if 문 형식으로 작성할 수 있습니다.
x=0 if x >= 0: if x>0: print(str(x)+"는 양수입니다.") else: print("zero") else: print(str(x)+"는 음수입니다.")
zero
x=-7 if x >= 0: if x>0: print(str(x)+"는 양수입니다.") else: print("zero") else: print(str(x)+"는 음수입니다.")
-7는 음수입니다.
댓글
댓글 쓰기