[Python] Python 7일차

시퀀스와 연산자에 대해서 공부했다.

쉬운 내용이었지만 이것저것 시도하느라 분량이 많아졌다.

***표준적인 연산의 우선순위***
1. 괄호안쪽의 수식
2. 지수 및 근호
3. 곱하기와 나누기
4. 더하기와 빼기

***** True, False 규칙 *****
0, 빈 객체, None은 False. 나머지는 다 True.

===== and, or 규칙 =====
* and. False and False는 앞의 False가 출력, True and True는 뒤의 True가 출력된다.
1. True and True 만 True. 나머지는 다 False 이다.
2. 둘 다 True면 뒤의 값이 출력된다. ex) 1 and 10 => 10
3. False and True면 False를 표시하는 값이 출력된다. ex) [] and 1 => []
4. 둘 다 False면 앞의 False가 출력된다. ex) [] and () => []

* or. False or False는 뒤의 False가 출력, True or True는 앞의 True가 출력된다.
1. False or False 만 False. 나머지는 다 True 이다.
2. 둘 다 True면 앞의 값이 출력된다. ex) 1 or 10 => 1
3. False or True면 True를 표시하는 값이 출력된다. ex) [] or 1 => 1
4. 둘 다 False면 뒤의 False가 출력된다. ex) [] or () => ()

이 세 가지가 오늘 건진 것이다.

아래는 공부한 코드

========================= Python =========================

##### 시퀀스 자료형
'''
*시퀀스의 의미
- 시퀀스 자료형은 저장된 각 요소를 정수 인덱스를 이용하여 참조가 가능한 자료형이다.
- 시퀀스 자료형에는 문자열, 리스트, 튜플이 있고 대표적인 자료형은 문자열이다.
- 내부 원소들을 이용하여 iterable 가능한 객체이다.
'''
### 시퀀스의 활용
# 시퀀스의 인덱싱
a=[20,30,40]
a[0# a의 인덱스 0번째 값인 20이 나온다.
a[-1# a의 인덱스 -1번째 값(맨 마지막 값)인 40이 나온다.
# 시퀀스의 슬라이싱. (객체)[시작할 인덱스(포함) : 끝낼 인덱스(제외) : 스탭]
a=[10,20,30,40]
a[1:3# a의 인덱싱 1~2까지의 값이 나온다. 결과는 [20, 30].
a[::2# a에서 0번부터 2개씩 띄워서 출력한다. 결과는 [10, 30]
a[::-1# 뒤에서부터 하나씩 스탭을 진행한다는 뜻. 결과는 [40, 30, 20, 10].

# 시퀀스의 연결.
a = [1,2,3]
b = [4,5,6]
a + b # 두 리스트를 연결한다. 결과는 [1, 2, 3, 4, 5, 6].
c = (1,2,3)
d = (4,5,6)
c + d # 튜플도 정상적으로 연결된다. 결과는 (1, 2, 3, 4, 5, 6).
e = 'abcd'
f = 'efgh'
e + f # 문자열도 연결된다. 결과는 'abcdefgh'.

# 시퀀스의 반복(Repitition). 연결의 확장개념. 반복해서 뒤에 붙인다.
a = [1,2,3]
a*# a가 두 번 연결되어 나온다. 결과는 [1, 2, 3, 1, 2, 3].

# 시퀀스의 멤버십 테스트.
a=(1,2,3,4,5)
in # a에 2라는 원소가 있으므로 True.

# 시퀀스의 길이 정보
a='abcde'
b=[1,2,3,4]
c=(1,2,3)
len(a) # 원소의 갯수를 센다. 결과는 5.
len(b) # 원소의 갯수를 센다. 결과는 4.
len(c) # 원소의 갯수를 센다. 결과는 3




##### 파이썬의 연산자
'''
***표준적인 연산의 우선순위***
1. 괄호안쪽의 수식
2. 지수 및 근호
3. 곱하기와 나누기
4. 더하기와 빼기

==참고==
프로그래밍 언어는 각 언어마다 규율이 있다.

ref.
연산의 우선순위
https://ko.wikipedia.org/wiki/%EC%97%B0%EC%82%B0%EC%9D%98_%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84
'''
### 산술 연산자
# +. 더하기. 두 값을 더한다.
# 4
2.0 # 4.0. float + int는 float로 출력된다.

# -. 빼기. 두 값을 뺀다.
# 0
2.0 # 0.0. float - int는 float로 출력된다.

# *. 곱하기. 두 값을 곱한다.
# 4
2.0 # 4. float * int는 float로 출력된다.

# /. 나누기. 두 값을 나눈다.
2/# 1.0. 나누기는 결과가 float로만 나온다.
2.0/# 1.0. 나누기는 결과가 float로만 나온다.

# %. 나머지. 두 값을 나눈 값의 나머지를 출력한다.
500%10 # 0
500%10.0 # 0.0. float가 연산에 참여하면 나머지도 float로 출력된다.
7%# 7. 7/8을 하고 나온 나머지.
7.0%# 7.0. float가 연산에 참여하면 나머지도 float로 출력된다.

# //. 몫. 두 값을 나눈 몫을 출력한다.
7//# 3. 7/2의 몫을 출력한다.
7.0//# 3.0. 연산에 float가 참여하면 결과가 float로 나온다.

# **. 제곱. 동일 요소를 연속하여 곱한다.
2**# 4
2**2.0 # 4.0. 연산에 float가 참여하면 결과가 float로 출력된다.
2**2**# 256. 연산의 우선순위로 인해 2**(2**3)으로 계산된다.



### 배정 대입 연산자
# += 연산자. 객체에 값을 더하고 결과를 객체에 리턴한다.
a = 1
a += # a = a + 4와 동일.
# 5.

# -= 연산자. 객체에 값을 빼고 결과를 객체에 리턴한다.
a = 1
a -= # a = a -1과 동일.
# 0

# *= 연산자. 객체에 값을 곱하고 결과를 객체에 리턴한다.
a = 2
a *= # a = a * 4와 동일.
# 8
b = 10
b *= # b = b * (5+1)과 동일. 즉 좌변을 먼저 연산하고 *=를 나중에 계산한다.
# 60.
c = 100
# c *= 5+1 *= 2 # 에러 발생. 연산자는 한 문장에 하나만 쓸 수 있다. SyntaxError: invalid syntax

# /= 연산자. 객체에 값을 나누고 결과를 객체에 리턴한다.
a = 10
a /= # a = a / 2와 동일.
# 5.0. float로 나온다.

# %= 연산자. 객체에 값을 나누고 나온 나머지를 결과에 리턴한다.
a = 7
a %= # a = a % 8과 같다.
# 7.

# //= 연산자. 객체에 값을 나누고 나온 몫을 결과에 리턴한다.
a = 10
a //= # a = a//5와 같다.
# 2.

# **= 연산자
a = 2
a **= # a = a**3과 동일.
# 8



### 관계(비교) 연산자
# >, >=, <, <=, ==, != 연산자는 기본이므로 생략한다.

# 관계 연산자를 통한 자료형 비교
10 15 # True. 전체가 다 True이므로 True. And 연산으로 True, True = True.
15 # False. 5 < 4가 False이므로 False. And 연산으로 False, True = False.
'a' 'b' # False. String은 아스키코드 비교로 False이다.
'a' 'A' # True. 아스키코드 비교로 True이다.
'abcd' 'abc' # True. 아스키코드 비교를 통해 'abcd'가 더 크다는 것을 알 수 있다.
'abcd'>'abd' # False. 'c'와 'd'의 비교로 'abd'가 더 크다.
'1234' '123' # True. 아스키코드 비교를 통해 '1234'가 더 크다는 것을 알 수 있다.
'1234' '124' # False. '3'과 '4'의 비교로 '124'가 더 크다.
[1234] > [123# True. '1234' > '123'과 같다.
[1234] > [124# False. '1234' > '124'과 같다.
[5100002] > [612# False. 맨 앞의 값만 비교한다는 것을 알 수 있다.
[123] == [132# False. 원소값의 비교가 아닌



### 논리 연산자
# and 연산자. 모두 True여야 True 출력.
a = 20
b = 30
a>10 and b<50 # True. 둘 다 True이므로 True.
a<10 and b<50 # False. False, True이므로 False.

# or 연산자. 둘 중 하나만 True여도 True. 둘 다 False여야 False이다.
a = 20
b = 30
a>10 or b<50 # True. 둘 다 True이므로 True.
a<10 or b<50 # True. False, True이므로 True.
a<10 or b>50 # False. 둘 다 False여서 False.

# not 연산자. !(boolean)이다.
not 10 20 # 10 < 20 이 True이기 때문에 not True => False 가 된다.
not 10 20 # 10 > 20 이 False이기 때문에 not False => True 가 된다.
not and # 논리구조에서 0과 비어있는 구조를 제외한 다른 모든 값은 True이므로 not True => False 가 된다.
not or '' # 논리구조에서 0과 비어있는 구조는 False이므로 not False => True 가 된다.

# 논리값의 반환
True # True는 1로 취급된다. 결과는 2.
False # False는 0으로 취급된다. 결과는 1.
True/# 0.5.
False/# 0.0.
bool(0# False. 0은 False이다.
bool(''# False. ''은 False이다.
bool([]) # False. 비어있는 구조는 False이다.
bool(None# False. 비어있는 구조는 False이다.
bool(1# True. 0과 비어있는 객체를 제외하면 다 True이다.
bool(0.0000001# True.

# and, or 논리 연산.
and # 결과는 1.
and # 결과는 0.
and # 결과는 0.
and # 결과는 0.
or # 결과는 1.
or # 결과는 1.
or # 결과는 1.
or # 결과는 0.

[] and # 결과는 []
and [] # 결과는 []
and [] # 결과는 0
[] and # 결과는 []
[] and () # 결과는 []
() and [] # 결과는 ()
[] or # 결과는 1.
or [] # 결과는 1.
[] or # 결과는 0.
or [] # 결과는 [].
[] or () # 결과는 ().
() or [] # 결과는 [].

and 10 # 결과는 10.
10 and # 결과는 1.
and 10 # 결과는 0.
10 and # 결과는 0.
or 10 # 결과는 1
10 or # 결과는 10
or 10 # 결과는 10.
10 or # 결과는 10.

[] and 10 # 결과는 [].
10 and [] # 결과는 [].
[] or 10 # 결과는 10.
10 or [] # 결과는 10.

[[]] and 10 # 결과는 10
10 and [[]] # 결과는 [[]]
[[]] and # 결과는 0.
and [[]] # 결과는 0.
[[]] or 10 # 결과는 [[]]
10 or [[]] # 결과는 10.
[[]] or # 결과는 [[]].
or [[]] # 결과는 [[]].

'''
***** True, False 규칙 *****
0, 빈 객체, None은 False. 나머지는 다 True.

===== and, or 규칙 =====
* and. False and False는 앞의 False가 출력, True and True는 뒤의 True가 출력된다.
1. True and True 만 True. 나머지는 다 False 이다.
2. 둘 다 True면 뒤의 값이 출력된다. ex) 1 and 10 => 10
3. False and True면 False를 표시하는 값이 출력된다. ex) [] and 1 => []
4. 둘 다 False면 앞의 False가 출력된다. ex) [] and () => []

* or. False or False는 뒤의 False가 출력, True or True는 앞의 True가 출력된다.
1. False or False 만 False. 나머지는 다 True 이다.
2. 둘 다 True면 앞의 값이 출력된다. ex) 1 or 10 => 1
3. False or True면 True를 표시하는 값이 출력된다. ex) [] or 1 => 1
4. 둘 다 False면 뒤의 False가 출력된다. ex) [] or () => ()
'''

'프로그래밍 > Python, R 프로그래밍' 카테고리의 다른 글

[Python] Python 8일차  (0) 2018.05.21
[R] R 8일차  (0) 2018.05.21
[R] R 7일차  (0) 2018.05.18
[Python] Python 6일차  (0) 2018.05.17
[R] R 6일차  (0) 2018.05.17

+ Recent posts