int형 데이터 (정수)
float형 데이터 (실수)
num = 2 # 2 -> [int] -> num 순서로 저장
print(num) # num -> [int] -> 2 출력 (역순)
정수 2를 메모리에 저장하려면, 파이썬의 int라는 상자를 통과시켜서 0과 1의 조합으로 바꾼 후 저장한다.
실수 또한 마찬가지로 파이썬의 float라는 상자를 통과시켜 0과 1의 조합으로 바꾼 후 저장한다.
int와 float가 따로 존재하는 이유는 0과 1의 조합으로 만들어내는 방법이 다르기 때문이다.
num = 1.0000000003 # 1.0000000003 -> [float] (오차발생) -> num
print(num) #num -> [float] (발생된 오타 삭제) -> 1.0000000003
파이썬이 1과 10 사이에 존재하는 정수를 전부 뽑아내는 것은 쉽다.
그러나 1.1과 2.2 사이에 존재하는 실수를 전부 뽑아내는 것은 불가능하다. 사실상 무한대이기 때문이다.
그래서 float함수는 근삿값을 뽑고, 오차 없는 실수를 만들 수 없다.
즉 실수는 오차가 존재한다.
출력 결과만 보면 오차가 없어보이고 오차가 문제가 되는 경우는 거의 없다.
그렇기에 float로 들어갈 때 만들어진 오차가 출력되는 역순과정에서 사라진다고 생각해도 무방하다.
그냥 실수는 오차가 존재한다는 것을 기억하자.
[3 -> int -> 0과 1의 조합으로 저장]
에서 3을 int형 값(데이터)라고 부른다.
[3.14 -> float -> 0과 1의 조합으로 저장)
에서 3.14를 float형 값(데이터)라고 부른다.
실제로 값을 넣을 때 우리가 int상자를 통과하는지, float상자를 통과하는지 정하지 않는다
파이썬이 알아서 판단해서 넣는다.
print(type(3))
print(type(3.14))
그렇기에 내가 넣는 값을 무엇으로 판단하는지가 궁금할 때 사용하는 함수가 type함수이다
출력하면
<class 'int'>
<class 'float'>
이렇게 나온다 . 즉 3은 정수형, 3.14는 실수형이라고 나온 것이다.
사람이 보기에 2와 2.0은 같다. 하지만 컴퓨터 내부적으로 볼 때는 2를 저장하는 모습과
2.0을 저장하는 모습의 배열은 분명 다를 것이다. 표현하는 방법 자체가 다르기 때문이다.
num = float(10)
print(num)
int형을 float형으로 바꾸었다. 출력하면 10이 아니라 10.0이 출력된다.
num = int(3.14)
print(num)
float형을 int형으로 바꾸었다. 3.14가 아니라 3이 출력된다.
num = float("3.14")
print(type(num))
문자열의 큰 따옴표 안의 내용이 float형일 경우 float함수를 사용하면 float형으로 바꿔준다.
즉 <class 'float'>가 출력된다. int도 똑같이 사용할 수 있다.
이렇게 int형 값을 float형 값으로 바꾸는 기능이 float함수의 기능이고
float형 값을 int형 값으로 바꾸는 기능이 int함수의 기능이다.
eval 함수를 대신 쓸 수 있는 함수가 바로 int와 float함수 등과 같은 것들이다.
더 많은 타입이 있는데 그건 추후 배울 때마다 추가할 예정이다.
num += 1
num = num + 1
둘은 같은 뜻이다. num의 값에 1을 증가시켜서 다시 num에 저장하라는 뜻이다.
num -= 1
num = num -1
num *= 3
num = num * 3
같은 맥락이다.
파이썬에서 소괄호는 수학에서의 소괄호와 같다. 먼저 연산해야 할 것이 있을 때 쓰면 된다.
자료형(==데이터타입==데이터형)
idle에서 그냥 35를 입력하면 불만 없이 35가 출력된다
즉 이미 35를 알고 있고, int형 값으로 잘 인식한다는 소리이다.
그냥 happy를 입력하면 뭐라 뭐라 궁시렁궁시렁 거리는데 모른다는 뜻이다.
파이썬 입장에서는 [1,2,3] 자체도 데이터로 인식한다.
[1,2,3]과 같은 데이터를 리스트형 데이터 라고한다.
[1,2,3] 같은 것을 데이터로 인식하기 힘든 이유는
3이나 3.14는 그 자체로 데이터지만 리스트는 여러개의 값을 묶어서 형성된 데이터이기 때문이다.
type([1,2,3])
<class 'list'> 라고 출력되며 리스트형임을 알려준다.
[1, "hello" , 3.3]
묶어서 그냥 입력해도 문제없이 출력된다.
단 묶어서 출력하면 "hello"가 'hello'로 바뀌어서 출력되는데, 큰 따옴표와 작은따옴표를 썼을 때는 아무 차이가 없다.
[1, 2, [3,4], ["aaa","zzz"]]
총 4개의 데이터가 있다. 리스트 안에 리스트를 담을 수도 있다.
st = [1, "hello", 3.3]
print(st)
리스트도 일종의 데이터이기에 변수에 담을 수 있다. st라는 변수에 리스트를 담은 코드이다.
int형 데이터 ex) 3,5,7,9
float형 데이터 ex) 2.2, 4.4, 6.6, 8.8
list형 데이터 ex) [3,5,7,9], [2.2, 4.4, 6.6, 8.8]
str형 데이터 ex) "안녕하세요", "안녕히 가세요"
[1,2,3] + [4,5]
이 코드를 출력하면 [1,2,3,4,5]가 출력된다.
주의할 점은 [4,5]라는 리스트를 [1,2,3] 리스트에 더하는 것이 아니라, [1,2,3,4,5]라는 새로운 리스트가 만들어지는 것이다.
num1 + num2를 하면 num1의 값이 증가하는 것이 아니라, 새로운 num3이 생기는 것처럼 말이다.
[1,2,3] * 2
를 출력하면 [1,2,3,1,2,3]이 출력된다.
파이썬은 리스트와 숫자가 곱할 수 있게 허용한다. 리스트를 내가 정한 숫자만큼 늘려주겠다는 의미이다.
기억했다가 필요할 때 쓰자
st = [1,2,3]
len(st) #3이 출력됨
sr = '집가고싶어요~'
len(sr) #7이 출력됨
len함수는 길이를 반환하는 함수이다. 리스트에서는 저장된 값의 수를,
문자열에서는 문자를 이루는 문자 하나하나의 수를 반환한다.
def example(n1):
print(n1)
example([1,3,5]) #st라는 변수에 [1,3,5]리스트가 저장이 되었다.
지금까지 함수를 호출하면서 정수, 실수, 문자열을 전달했었다.
파이썬은 데이터의 종류를 구분하지 않고 다 전달 가능하다. 그래서 리스트도 전달 가능하다.
def example():
st = [1,2,3,4,5]
return st
r = example()
print(r)
1. 함수 호출을 한다
2. st안에 [1,2,3,4,5]가 담긴다.
3. st를 반환한다.
4. example자리에 [1,2,3,4,5]가 온다
5. r을 출력하면 [1,2,3,4,5]가 출력된다
def example(st):
print(st)
return "Bye~"
r = example("Hello")
print(r)
1. 함수 호출을 한다.
2. st에 "Hello"가 저장된다.
3. "Hello"가 출력되고 "Bye~"가 반환된다.
4. example("Hello")가 "Bye~"로 대체된다.
5. r을 출력하면 "Bye~"가 출력된다.
'프로그래밍 언어 > 파이썬 기초' 카테고리의 다른 글
파이썬 '객체' (0) | 2023.05.18 |
---|---|
파이썬 인덱싱,슬라이싱 연산 (0) | 2023.05.18 |
파이썬 input함수, for 반복문 (0) | 2023.05.18 |
파이썬 함수 (0) | 2023.05.18 |
파이썬 print 함수 (0) | 2023.05.18 |