[Python] 선택구조

선택구조

선택구조의 구문형식

-  구문형식

→ 들여쓰기는 코드 블럭을 표현

→ 특정 동작을 수행하는 한 라인 이상의 명령문 집합

→ 스페이스 4칸 권고 (PEP-8)

if 불리언식 :
		명령문 1
        	명령문 2

선택구조의 실행흐름

→ if 라는 선택구조에 의해서 명령문이 실행될수도 , 안될 수도 있다.

불리언식

- 비교연산자를 사용하여 결과가 불리언 타입으로 생성되는 표현식

비교연산자

불리언 타입

- 논리값이 참(True) 과 거짓 (False)의 값만 표현할 수 있는 데이터 타입

→ True 또는 False 예약어를 사용하여 표현

→ 비교 연산자를 사용한 표현식의 결과로 생성

원뿔 계산 프로그램 개선

- 기존 코드

# 반지름 사용자 입력
rad = int(input("반지름을 입력하세요 : "))

# 높이 사용자 입력
hei = int(input("높이를 입력하세요 : "))

# 부피 & 겉넓이 계산
vol = 1/3 * 3.14 * rad ** 2 * hei
suf = 3.14 * rad ** 2 + 3.14 * rad * hei

print("원뿔의 부피는 ",vol,"입니다.")
print("원뿔의 겉넓이는 ",suf,"입니다.")

 

문제점 : 사용자가 반지름 값에 음수를 입력하면 ?

# 반지름 사용자 입력
rad = int(input("반지름을 입력하세요 : "))

# 높이 사용자 입력
hei = int(input("높이를 입력하세요 : "))

if rad > 0 : 
    # 부피 & 겉넓이 계산
    vol = 1/3 * 3.14 * rad ** 2 * hei
    suf = 3.14 * rad ** 2 + 3.14 * rad * hei

    print("원뿔의 부피는 ",vol,"입니다.")
    print("원뿔의 겉넓이는 ",suf,"입니다.")

논리 연산자

개념

 참, 거짓을 구별할 수 있는 명제를 대상으로 명제의 집합을 위해 고안한 연산자

 

- 두 개의 논리값(불리언식)을 연산하여 참 또는 거짓을 결과로 얻는 연산자

→ 두개의 피연산자를 갖는 이항 연산자

→ and(논리곱), or(논리합),not(논리부정) 연산자 사용

→ 왼쪽에서 오른쪽의 방향으로 결합

and 

- 두  논리값이 모두 True 일때 True이고, 어느 하나 False 일 경우 False를 반환

- 진리표 (true table)

or

- 두 논리값이 모두 False 일때 False 이고 어느 하나 True 일 경우 True를 반환

- 진리표

not

- 단항 연산자로 논리값을 반전하여 False는 True로, True는 False로 반환

- 진리표

 

단락평가

- short-circuit evaluation

- 첫번째 논리값만으로 전체 연산 결과가 판별가능할 때 두번째 논리값은 확인(평가)하지 않는 기법

→ C나 java 에서 예상치 못한 결과를 낳을 수 있는 단락평가의 개념은 꼭 알아둬야 한다 !

원뿔 계산 프로그램 개선

문제점 : 사용자가 높이에 음수를 입력하면 ?

# 반지름 사용자 입력
rad = int(input("반지름을 입력하세요 : "))

# 높이 사용자 입력
hei = int(input("높이를 입력하세요 : "))

if rad > 0 and hei > 0: 
    # 부피 & 겉넓이 계산
    vol = 1/3 * 3.14 * rad ** 2 * hei
    suf = 3.14 * rad ** 2 + 3.14 * rad * hei

    print("원뿔의 부피는 ",vol,"입니다.")
    print("원뿔의 겉넓이는 ",suf,"입니다.")

선택구조의 확장

이분 선택 구조의 구문 형식

- 구문형식

if 불리언식 :
		명령문 1
else : 
        	명령문 2

 

- 실행 흐름

다분 선택 구조의 구문형식

- 구문형식

if 불리언식 :
		명령문 1
elif 불리언식2 : 
		명령문 2
        ..
elif 불리언식 n :
		명령문 n
else : 
        	명령문 n+1

 

- 실행흐름

중첩 선택 구조의 구문형식

- 구문형식

if out 불리언식 :
	if in불리언식1 :
		in명령문1
    else :
    	in명령문2
else :
	if in불리언식2 : 
		in명령문3

 

- 실행흐름

원뿔 계산 프로그램 

# 반지름 사용자 입력
rad = int(input("반지름을 입력하세요 : "))

# 높이 사용자 입력
hei = int(input("높이를 입력하세요 : "))

if rad > 0 and hei > 0: 
    # 부피 & 겉넓이 계산
    vol = 1/3 * 3.14 * rad ** 2 * hei
    suf = 3.14 * rad ** 2 + 3.14 * rad * hei

    print("원뿔의 부피는 ",vol,"입니다.")
    print("원뿔의 겉넓이는 ",suf,"입니다.")
else :
	print("반지름과 높이의 값을 모두 양수로 입력해주세요")

가장 큰 수를 찾는 프로그램

- 세 수 A,B,C를 입력받고 그 중 가장 큰 수를 출력하는 프로그램

 

'Back > Python' 카테고리의 다른 글

[Python] 제어구조  (25) 2024.03.22
[Python] 프로그래밍 기초  (21) 2024.03.21