본문 바로가기
## 오래된 게시글 (미관리) ##/Python (Linux)

3. Python - 불리안 연산, 숫자 자료형

by #Glacier 2018. 11. 23.
반응형

안녕하세요 오늘은 불리안 연산에 대해 알아보고 숫자 자료형의 중간 부분까지만 알아보도록 할게요


1. 불리안

불리안 자료형은 참 또는 거짓 값을 갖는 자료형으로, int클래스에서 상속받아 bool클래스로 구현되어 있습니다.

False는 0 True는 1로 하여 정수 계산이 가능합니다.


class bool([x])

1. x가 생략되거나 거짓이면 False로 반환, 그렇지 않으면 TRUE

2. int클래스의 자식 클래스(sub class, child class)이다.


2. 불리안 연산


불리안 연산자는 논리합(or), 논리곱(and), 부정(not)등이 있습니다.


 (1) [x or y] : if x is False then y else x

 (2) [x and y] : if x is False then x else y

 (3) [not x] : if x is False then Ture else False


or와 and 연산자는 단축회로(short-circuit)연산자 입니다.

x or y 연산은 x의 값이 True이면 y에 관계없이 True이 되고,

x and y 연산은 x의 값이 True이면 y값에 관계없이 결과는 False입니다.

not연산자는 비교연산자(--, != 등)보다 우선순위가 낮기 때문에 not x==b는 not (x==b)와 결과과 같습니다.


불리안 연산자는 주로 비교연산자와 함께 사용됩니다. 정수의 and 연산 결과는 작은 값 min이고,  or연산 결과는 큰 값(max)입니다.

실수의 and 연산 결과는 큰 값(max)이고, or 연산 결과는 작은 값(min)입니다.


3. all()함수와 any()함수


반복 가능한 자료형(str, list, tuple, dict등)에서 all()함수와 any() 함수를 사용할 수 있습니다.

(1)all(iterable) 함수는 반복 가능한 자료형의 모든 항목이 TRUE이면 결과는 TRUE

(2)any(iterable) 함수는 반복 가능한 자료형(iterable)의 어떤 한 항목이 TRUE이면 함수의 결과는 TRUE

## 예제1 불리안 자료형


>>> bool(None)
False
>>> bool(0)     # 정수 0
False
>>> bool(0.0)  # 소숫점 0
False
>>> bool(0+0J) 
False
>>> bool('')     # 빈 문자열
False
>>> bool({})    # 빈 사전형
False
>>> bool(())    # 빈 튜플형
False
>>> bool([])    # 빈 리스트형
False
>>> bool(set()) # 빈 Set
False

>>> a=10+True  ## True=1
>>> a
11
>>> issubclass(bool, int)
True


## 예제2 - 불리안 연산, all, any함수


>>> x=True
>>> y=False
>>> x or y
True
>>> x and y
False
>>> y and x
False
>>> not x
False
>>> 
>>> a=0
>>> a != 0 and 2//a == 1
False
>>> 1 and 10
10
>>> 1 or 10
1
>>> 1.0 and 10.0
10.0
>>> 1.0 or 10.0
1.0
>>> bool (1.0 or 10.0)
True
>>> not (1.0 and 10.0)
False
>>> 
>>> all ([True, True, True])
True
>>> all ([True, True, False])
False
>>> 
>>> any([True, True, False)]  # ])의 위치를 잘 보세요. 제가 잘못눌러서..
SyntaxError: invalid syntax
>>> any([True, True, False])
True
>>> all(a>0 for a in [1,2,3])   # for a in [1,2,3]은 a에 1,2,3이 차례로 들어가는 반복문입니다. 모든 결과는 양수이다
True
>>> all (a>0 for a in [1,2,-3]) # 모든 항목이 양수는 아니다
False
>>> any (a>0 for a in [1,-2,-3]) #어떤 한 항목이 양수는 아니다.
True


4. 숫자 자료형 (int,float,complex)

 

정수(int), 실수(float), 복소수(complex) 등의 다양한 숫자(numeric)자료형을 지원하며, 정수의 길이는 제한이 없습니다.

실수는 8바이트(64비트)로 표현하는 배정도(double precision)실수 입니다.

파이썬의 숫자형 자료형은 int, float, complex로 구현되어 있습니다.


 4.1 정수형 : integer

 - 정수형 상수는 10진수(decimal), 8진수(octal), 16진수(hexa), 2진수(binary)가 있습니다.

 - 숫자 0 뒤에 영문 o또는 O가 오면 8진수, 영문 x 또는 X가 오면 16진수, 영문 b나 B가 오면 2진수 정수입니다.

 - 주의할 것은 편집기에서 숫자 0과 영문 O (여기서 봐도 ;; 똑같아 보이네요)의 구별이 애매하므로 주의

 - 정수, 실수, 복소수의 허수부 상수 등은 기호를 갖지 않고, 단항 연산자와 결합하여 부호 기호를 사용합니다.

 - 예를 들어 -1은 단항 연산자 - 와 정수 상수 1의 결합입니다.


class int(x=0) / class int(x, base=10)


1. 숫자 또는 문자열인 x를 정수로 반환합니다. x가 실수이면 소수점 이하를 절삭합니다.

   인수(argument) 없이 int()는 정수 O를 반환합니다.(영문 O)



## 예제 1 - int 자료형


>>> int()
0
>>> int(10)
10
>>> int('10')
10
>>> int(3.14)
3

** x가 문자열이고, base에 2,8,10,16진법을 명시하여 정수 생성**
>>> int('010',2)
2
>>> int('010',8)
8
>>> int('010', 16)
16
>>> int('010', 10)
10


>>> type(1)
<class 'int'>
>>> 0
0
>>> -0
0
>>> +1
1
>>> 0o11 # 8진수
9
>>> 0x11 # 16진수
17
>>> 0b11 # 2진수
3
>>> a='1'
>>> type(a)
<class 'str'>
>>> a=int('1')
>>> type(a)
<class 'int'>
>>>


## 예제 2 - 실수형 float


>>> float()
0.0
>>> float(10)
10.0
>>> float('10')
10.0
>>> a=float('nan')
>>> a
nan
>>> type(a)
<class 'float'>
>>> b=float('inf')
>>> type(b)
<class 'float'>
>>> c=float('-inf')
>>> c<b
True
>>> type(3.14)
<class 'float'>
>>> 1.
1.0
>>> .1
0.1
>>> 314e-2
3.14
>>> 3.14e2
314.0
>>> a=float(1)
>>> type(a)
<class 'float'>
>>> b=float('1')
>>> type(b)
<class 'float'>
>>> float('inf')
inf
>>> float('-inf')
-inf
>>> import sys

 #sys 모듈을 사용하여 최대,최소, 실수간격을 확인합니다. 실수는 64비트 배정도 실수로 표현되기 때문에 유한합니다.
>>> sys.float_info.max
1.7976931348623157e+308
>>> sys.float_info.min
2.2250738585072014e-308
>>> sys.float_info.epsilon
2.220446049250313e-16
>>> a=1.0
>>> b=a+sys.float_info.epsilon
>>> a<b
True
>>> c=a+sys.float_info.epsilon/2.0
>>> a==c
True


## 예제3 - 복소수형 : complex

-파이썬의 복수형은 complex클래스로 구현되어 있습니다. 복소수는 크기 비교를 할 수 없습니다.

class complex([real[,imag]])

(1) 문자열을 복소수로 반환합니다. real 인수가 문자열일 때는 중앙의 부호(+,-) 주위에 공백을 허용하지 않습니다.


>>> complex('1+2j')
(1+2j)
>>> complex('1 +2j')
Traceback (most recent call last):
  File "<pyshell#97>", line 1, in <module>
    complex('1 +2j')
ValueError: complex() arg is a malformed string
>>> 
>>> #real + imag j인 복소수를 반환합니다. 인수가 없으면 0j를 반환합니다.
>>> 
>>> complex(1)
(1+0j)
>>> complex(1,2)
(1+2j)
>>> #실수부 complex.real, 허수부 complex.imag의 멤버 변수와 켤레 복소수 complex.conjugate()메소드가 있습니다.
>>> a=complex(1,2)
>>> a.real
1.0
>>> a.imag
2.0
>>> a.conjugate()
(1-2j)
>>> 1e2j
100j
>>> 1+2j
(1+2j)
>>> a=complex(10,20)
>>> type(a)
<class 'complex'>
>>> a
(10+20j)
>>> a.real
10.0
>>> a.imag
20.0
>>> a.conjugate()
(10-20j)


# 오늘은 할 만 했던것 같네요! 다음엔 산술연산, 비교연산, 비트연산 등을 알아볼게요~

반응형