✏️

220810 | ② Python / 멤버십 연산자, 동일성 연산자 / 제어문: 조건문(if, else, elif), match-case, 반복문(while) 본문

K-Digital Training

220810 | ② Python / 멤버십 연산자, 동일성 연산자 / 제어문: 조건문(if, else, elif), match-case, 반복문(while)

콩세 2022. 8. 11. 12:35

▷자료형 변환 문법 추가 설명

https://bean-three.tistory.com/manage/newpost/3?type=post&returnURL=https%3A%2F%2Fbean-three.tistory.com%2F3

위 링크 타고 들어가면 9일 수업 내용 있는데 자료형 변환에 대해 언급했었음

↓↓↓


자료형 변환 - 자동이랑 수동 두가지 방법이 있음

- 일부 서로 다른 자료형을 가진 값끼리 연산하면 자동으로 자료형으로 변환

  (뒤에서 더 나옴. https://bean-three.tistory.com/8?category=1297721) 

- int() 정수변환함수 / float() 실수변환함수 / str() 문자열변환함수 / bool() 논리형변환함수 사용

  위  함수를 사용하여 서로 다른 자료형으로 수동으로 변환 가능

- 함수 식을 해석할때는 항상 등호를 기준으로 오른쪽에 있는걸 먼저, 왼쪽은 마지막에 해석한다.


자료형 변환 문법에는 두가지 종류가 있음

 

1. 수동변환 = 정수 int, 실수 float, 문자열 str

2. 자동변환(=자동 형 변환)
- ( / ) 나누기 연산자의 경우, 정수와 정수 간에 연산 시 자동으로 실수형으로 변환.
  보통은 < 정수 + 정수 = 정수 >로 나오는데, 나누기 연산자에서만 < 정수 + 정수 = 실수 >

- 대부분의 산술 연산자에서, 정수와 실수 간에 연산 시 자동으로 실수형으로 변환
  (실수가 좀 더 넓은 범위를 나타낼 수 있기 때문)

ex) print( 10 / 5 ) 하면 2.0 으로 나옴 < 정수+정수=실수
      print( 10 + 5.0 ) 하면 15.0 으로 나옴 < 정수+실수=실수

 


▶멤버십 연산자 : in,  not in

- 왼쪽이 오른쪽의 멤버인지, 멤버가 아닌지 검사하는 것.

print ("H" in "Hello") # True
print ("A" in "Hello") # False

괄호 속 왼쪽 문자 H와 A가 오른쪽 Hello에 포함되어있는지를 확인해서

포함되어 있으면 True / 아니면 False

 

print ("Hello" not in "Hello Python") # False
print ("Hi" not in "Hello Python") # True

괄호 속 왼쪽 문자 Hello와 Hi가 오른쪽 Hello Python에 없다고 말하는 것.

포함되어 있으면 False  /  포함되어 있지 않으면 True


* 문자열 입력 여부 검사 예제 : 아무것도 입력하지 않았을때 문자열 길이가 0인 것을 이용

nickname = input("닉네임을 입력하세요: ")
print ("닉네임 입력 여부:", len(nickname) > 0)
닉네임을 입력하세요: 콩세 (입력한 닉네임)
닉네임 입력 여부 : True

콩세 라는 닉네임을 입력했기 때문에 글자수가 있으니까 True 라고 나온다.

아무것도 입력하지 않고 엔터를 눌렀으면 False가 뜬다.


▶동일성 연산자

동등성 (equality) VS 동일성 (Identity)

 

동등성

- 변수의 값이 같은지 여부를 검사. (이 문맥상 같으면 자료형이 달라도 상관없음)

- ==, != 를 사용해서 검사한다.

동일성

- 두 변수가 일치하는지 여부 검사. (값과 자료형 모두가 같은지 여부)

- is, is not을 사용해서 검사한다.


0, 0.0, ' ', " ", """"""  =>  False로 취급할 수 있음.

1, -1, 0.1, 'hello', "False"  => True로 취급할 수 있음.

 

- 값이 같은지 비교 (자료형이 다르더라도 값이 같으면 True)

print(0==0) / 값: 같음, 자료형: 같음(int) => True

print(0==0.0) / 값: 같음, 자료형: int, float => 값은 같으므로 True

print(0==False) / 값: 같음, 자료형: int, bool => 값은 같으므로  True

print(1==True) / 값: 같음, 자료형: int, bool => 값은 같으미로 True

 

- 값과 자료형 모두 같은지 비교 (값과 자료형이 모두 같아야 True, 하나라도 다르면 False)

print(0 is 0) / 값: 같음, 자료형: 같음(int) => True

print(0 is 0.0) / 값: 같음, 자료형: int, float => 값은 같지만 자료형은 다르므로 False

print(0 is not False) / 값: 같음, 자료형: int, float / is not 이니까 => True

print(1 is not  True) / 값: 같음, 자료형: int, float / is not 이니까 => True


ans = 1
if ans ==  True:
    print("실행")

ans의 값은 1이고, 이 값이 True와 같다면 "실행"을 출력하라는 뜻.

1은 int자료형이고 True는 bull자료형 이지만 값이 같기 때문에 "실행"이 뜬다.

ans = 1
if ans is True:
    print("실행")

값은 같지만 자료형이 다르기 때문에 "실행"이 뜨지 않는다.


▶제어문 ( control statement )

- 프로그램의 실행 흐름을 제어하는 문장

- 블록 단위로 코드를 실행함

 

1. 조건문 ( conditional statement)

주어진 값 또는 조건식을 판단해서 선택적으로 실행하는 문장.

 

- if 문

if (bool값 또는 조건식) :
    True일 경우 실행할 코드
    ...
    ...

num = int(input("0을 제외한 숫자를 입력하세요: "))
if num != 0:
    print("당신이 입력한 값은", num, "입니다.")
    print("잘 입력하셨습니다.")
print("프로그램 종료.")
당신이 입력한 값은 ?입니다.
잘 입력하셨습니다.
프로그램 종료.

입력한 값이 0이 아니라면(True에 해당된다면) 위 3줄이 출력된다.

 

0을 입력했다면⬇

프로그램 종료.

 


- else 문

num = int(input("0을 제외한 숫자를 입력하세요: "))

if num != 0:
    print("당신이 입력한 값은", num, "입니다.")
    print("잘 입력하셨습니다.")
else:
    print("왜 0을 입력했나요?")
    
print("프로그램 종료.")

0을 제외한 숫자를 잘 입력하면 = True => 당신이 입력한 값은~, 잘입력하셨~, 프로그램종료가 쭉 출력된다.

0을 입력하면 = False => 왜 0을 입력~, 프로그램종료가 출력된다.


- elif 문 (else if 의 줄임말)

num = int(input("아무 정수나 입력하세요: "))

if num > 100:
    print("큰 수를 입력하셨군요?")
if num > 10:
    print("적당한 수를 입력하셨네요.")
if num > 0:
    print("작은 수를 입력하셨네요.")
else:
    print("0 이하를 입력하셨나요?")
    
print("프로그램 종료")

if문에서 먼저 조건을 제시하고 통과하지 못했으면 = False => 바로 프로그램 종료

elif에서 제시한 조건에 위에서부터 차례대로 대입하고

대입했으면 해당 print문 출력 + 프로그램 종료

elif도 통과하지 못했으면 else로 대입되어 0 이하를~ 출력됨.


2. match-case 문

- Python 10 버전에서 추가된 새로운 문법. 구버전에서 사용 불가.

- 규칙성이 없을 때 쓰기 좋음.

match 변수:
	case 값1:
    	변수와 값1이 일치할 경우 실행할 블록
    case 값2:
    	변수와 값2가 일치할 경우 실행할 블록
    ...

먼저 변수 하나를 작성하고, case값과 변수가 일치하면 case 아래 블록을 실행한다.

a = 10
match a:
	case 10:
    	print("a는 10입니다.")
    case 9:
    	print("a는 9였군요.")
    case 8|7|6:
    	print("a는 8, 7, 6이네요.")
    case _:
    	print("a는 뭘까요...?")

a는 10이고, a와 일치하는 변수 찾기.

a는 10입니다. 가 출력된다.

 

만약 a가 9라면 a는 9였군요 출력. ...

모든 케이스에 부합하지 않으면 a는 뭘까요...? 가 출력.

 

case 8|7|6은 8이거나 7이거나 6일 수 있는 경우, 여러가지 경우일 때 작성하는 방법.

a = 6 이면 a는 8, 7, 6이네요. 가 출력된다.


+) 조건 표현식(삼항 연산자) : 조건문을 응용한 표현식

- x if C else y

- 조건문을 한 줄로 표현하는 문법

- 표현식의 참/거짓 여부를 판별하여 값을 선택적으로 반환 

time_now = 5
location = "집" if time_now >= 5 else "교실"

print("어디 있니?")
print(location, "이요.")

조건식 자체가 피연산자가 된다.

if 뒤 조건식이 True이면 앞에 있는 '집'을 / if 뒤 조건식이 False이면 뒤에 있는 '교실'을 출력한다.

집 (값1) / time_now >= 5 (조건식) / 교실 (값2)    => 피연산자가 총 3개라서 삼항 연산자 라고 부르는거.

 

time_now = 5

location = None
if time_now >= 5:
    location = '집'
else:
    location ='교실'
    
print('어디 있니?')
print(location, '이요.')

if문으로도 작성할 수 있음.

삼항 연산자를 쓰면 코드를 더 간결하게 쓸 수 있지만

한 눈에 알아보기 힘들다는 단점이 있다.


 

3. 반복문

일정 횟수만큼, 또는 조건식을 만족하는 동안 블록을 반복 실행하는 문장.

 

- while

조건식을 만족하는 동안(=True인 동안) 반복되는 문장

num = 0
while num < 10:
    print(num)
    num += 1
0
1
2
3
4
5
6
7
8
9

num은 0이다.

num이 10 미만이라면 반복해서 출력한다.

첫번째로 0을 출력한 후 1을 더해준다.

num이 0에서 1이 되었지만, 아직 10 미만이기 때문에 또 출력한다.

출력 후 계속 1씩 더해준다.

...

9를 출력한 후 1을 더해준다

num이 10이 되었고, 10 미만이 아니기 때문에 출력을 멈춘다.

 

위 조건식에서 마지막 문장 (num += 1) 처럼 제어해주는 문장이 꼭 필요하다.

제어해주는 문장이 없으면 값이 True가 되고, 무한으로 계속 출력된다.


반복문 for은 220811  ②에 이어서 작성!