본문 바로가기

Back-End/Python

[Python]파이썬 - 불리언, 집합, 제어문

~ 목차 ~

  • 불리언( boolean )
  • 집합 ( set )
  • 제어문 ( if )
  • 반복문 ( while)

 

[ 불리언 boolean ]

  • 참 또는 거짓을 나타내는 자료형
  • True, False (꼭!!! 첫 글자가 대문자)
    • True인 것들 :  양수, 음수
    • False인 것들 : 0
  • 불리언은 앞에서 부터 순서대로 true, false인지 체크함

 

문자1과 숫자1은 다른

  • and와 or (자바와 다름!)
    • 자바에서는 &&, 파이썬에서는 and.  (둘 다 만족)
    • 자바에서는 ||  파이썬에서는 or.(둘 중 하나만 만족해도 됨)
a = 3
b = 1

(a == b) and (a >= b)

(a >= b) or (a <= b)

 

결과 : False

          True

  • in
a = [1, 2, 3]
1 in a

결과  : True

 

  • 값 변수와 참조 변수
    • 값 변수 : 기본타입 (정수, 실수 등)
    • 참조 변수 : 기본타입 이외의 것들 (list 등)
    • 값의 주소 확인 : id(변수)
#값변수
a = 1
b = a
b = 2
print(a, b)
print(id(a), id(b))

결과 : 1 2
          140708766192424 140708766192456

#참조 변수
a = [1, 2, 3]
b = a
b[0] = 3
print(a, b)
print(id(a), id(b))

결과 : [3, 2, 3] [3, 2, 3]
          1817117979968 1817117979968

 

※리스트는 참조 변수.

   메모리 상에 list가 따로 생성되어 있고 a는 그 list의 주소값을 값으로 가짐,

   b또한 list 주소값을 공유하게 됨.

   따라서 b[0] = 3으로 list의 값을 바꾸니까 참조하고 있던 a와 b 모두 그 값이 변경됨. 

 

  • 값만 가져오고 싶을 때 : copy
#값만 가져오고 싶을 때, copy 사용해야 값이 같이 변하지 않음
a = [1, 2, 3, 4]
b = a.copy()
b[0] = 5
print((a, b))
print(id(a), id(b))

결과 : ([1, 2, 3, 4], [5, 2, 3, 4])
          1817117287296 1817117097728

 


[ 집합  set ]

  • 순서가 없고, 중복 없다.
  • set([ ]) 이런 형태로 선언
  • 요소에 접근할 때 list()로 변환 해서 인덱스로 접근한다.
#set은 중복 없이 나타냄
s1 = set([1, 2, 3, 4, 5])
s2 = set('Hello')
s3 = set([1, 2, 2, 3, 4, 5, 5, 3])
s4 = set([1, 2, 2, 3])
print(s1, type(s1))
print(s2, type(s2))
print(s3, type(s3))
print(s4, type(s4))

 

결과 

{1, 2, 3, 4, 5} <class 'set'>
{'l', 'H', 'o', 'e'} <class 'set'>
{1, 2, 3, 4, 5} <class 'set'>
{1, 2, 3} <class 'set'>

 

※ 주의! error

#set은 바로 index가 적용이 안돼서 list로 형태변환 해준 다음 index로 값을 얻어와야함
s1[0]

 

결과

TypeError: 'set' object is not subscriptable

 

  • 요소 접근
list(s1)[0]

 

결과

1

 

  • 집합에 사용되는 연산
    • 교집합 : intersection (&)
    • 차집합 : difference (-) // B-A와 A-B 가 다름!
    • 합집합 : union (|)
s1 = set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
s2 = set([5, 6, 7, 8, 9 ,10 ,11 ,12])
#교집합
print(s1 & s2)
print(s1.intersection(s2))
#합집합
print(s1 | s2)
print(s1.union(s2))
#차집합
print(s1 - s2)
print(s1.difference(s2))
print(s2 - s1)
print(s2.difference(s1))

 

결과

{5, 6, 7, 8, 9, 10}
{5, 6, 7, 8, 9, 10}
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
{1, 2, 3, 4}
{1, 2, 3, 4}
{11, 12}
{11, 12}

 

  • set집합에 데이터를 추가 : add (append와 비슷)
s1.add(11)
s1

 

결과

{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}

 

  • set집합에 데이터를 삭제 : remove
s1.remove(5)
print(s1)

 

결과

{1, 2, 3, 4, 6, 7, 8, 9, 10, 11}

 


[제어문 if]

  • 조건의 참, 거짓에 따라 동작을 수행
  • 들여쓰기가 if문을 범위를 정함(중요!!!)
  • 자바는 if(조건){ return; } 형태
  • 형태
#기본 if만
if 조건:
    실행문1
    실행문2
실행문3 (블럭이 끝나니까 if문에 해당되지 않음) 

#if, elif, else
if 조건: 
    실행문
elif 조건:
    실행문
else:
    실행문

 

 

 

  • 예1
x = 3
if x == 3:
    print('3입니다.')
else:
    print('3이 아닙니다.')

결과

3입니다.

 

  • 예2
x = 4
if x == 3:
    print('3입니다.')
else:
    print('3이 아닙니다.')

결과

3이 아닙니다.

  • 예3
x = -1
if x >= 0:
    print('양수입니다.')
elif x <0:
    print('음수입니다.')
else:
    print('숫자가아닙니다.')

결과

음수입니다.

 

  • 예4 (들여쓰기 오류)
#들여쓰기 오류
x = 3
 if x == 3:
     print('3입니다.')

결과

IndentationError: unexpected indent

 

 

  • pass 사용
#로직이 기억나지 않아서 오류가 왜 나는지 모를 때 pass를 넣으면 넘어가짐
b = 3
if b == 3:
    pass
print(b)

결과

3

 

  • true, false 값 비교

 

a = -10
b = 2
# a > b
# b < a
# a == b
# a != b
# a or b

if a and b:
    print('참')
    print(a and b)

not a

결과


2(b의 값)

False

 

 

 ※ 0만 false값 // 나머지 양수, 음수 값들은 true값.


[반복문 while]

 

  • 조건 참일동안 무한히 반복
  • 탈출문이 반드시 있어야 함
  • 예1
jajang = 0
while jajang < 10:
    jajang += 1
    print(f'짜장면을 {jajang}그릇 먹었다.')
    if jajang == 10:
        print('무료 쿠폰 지급 되었습니다.')

 

반복문 출력

 

 

  • 예2
jajang = 0
while True:
    jajang += 1
    print(f'짜장면을 {jajang}그릇 먹었다.')
    if jajang == 10:
        print('무료 쿠폰 지급 되었습니다.')
        break

반복문 출력

 

  • break는 완전 종료, continue는 한번 건너뛰기, pass는 if문 안에서만 적용
a = 0
while a < 0:
    a += 1
    if a % 2 == 0:
        continue
    print(a)

1
3
5
7
9

 

a = 0
while a < 10:
    a += 1
    if a % 2 ==0:
        pass
    print(a)

1
2
3
4
5
6
7
8
9
10

728x90