- 불리언( boolean )
- 집합 ( set )
- 제어문 ( if )
- 반복문 ( while)
[ 불리언 boolean ]
- 참 또는 거짓을 나타내는 자료형
- True, False (꼭!!! 첫 글자가 대문자)
- True인 것들 : 양수, 음수
- False인 것들 : 0
- 불리언은 앞에서 부터 순서대로 true, false인지 체크함
- 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
'Back-End > Python' 카테고리의 다른 글
[Python][파이썬] 고객 정보 관리 시스템 만들기 실습 (4) | 2023.11.06 |
---|---|
[Python][파이썬] 제어문 - 조건문(if), 반복문(for, while) (0) | 2023.11.06 |
[Python]파이썬 변수 - 숫자, 문자열, 리스트, 튜플(2) (0) | 2023.11.03 |
[Python]파이썬 변수 - 숫자, 문자열, 리스트, 튜플(1) (3) | 2023.11.03 |
[Python] Markdown 문법 (2) | 2023.11.02 |