
파이썬에는 IDLE Shell이라는 툴과 코드편집기라는 툴이 있다.
- IDLE Shell : 실제 프로그램을 만들 때 사용하지는 않는 간단한 코딩 테스트 툴
- 코드편집기 : 실제로 프로그램을 만드는 툴
사람이 쓰는 개발언어(C, C++, Java, Python 등)를 기계어(010110...)로 번역을 해주는것이 컴파일러(Compiler)와 인터프리터(Interpreter)
차이는 아래와 같다.
위 파이썬 실행과정의 불편함 해소가능 (코드편집기에서 작성한 내용이 셸 모드에서 실행되는 등)
Python File을 열고, 소스를 작성한 후 Shift+F10을 누르면 하단에 바로 출력!
숫자, 문자, 음원, 영상, 이미지등
모든 관찰이나 측정을 통해 수집된 것들
📢 데이터는 수집, 가공을 거쳐 정보가 된다.
숫자, 문자, 음원/영상과 같은 데이터가 저장되어있는곳
(우리가 입력하는 모든것은 메모리에 저장된다.)
* 프로그램에서 =는 할당의 뜻이다.
데이터가 저장되어있는 특정 공간
(하나의 값을 저장할 수 있는 저장공간)
📢 메모리의 특정공간은 주소로 이루어져 있다.
그 주소를 우리가 원하는 명칭으로 선언해주는것을 변수선언, 그 주소의 이름을 변수명, 해당 변수명에 데이터를 입력해주는것을 변수 초기화라고 한다.
데이터를 재사용하기 위해
# e.g. 현재 총 저축액이 100만원이 있고, 한달에 50만원씩 모으면 1년뒤에 얼마가 있을까?
save = 1,000,000
add = 500,000
print (save+add*12)
#출력값 : 7,000,000
#앗, 저축액이 100만원이 아니라 250만원이었네?
#이때, save = 1,000,000 을 save = 2,500,000으로 변경해주기만 하면 끝!
효율적인 메모리 사용을 위해 데이터를 정수형, 실수형, 문자형, 논리형으로 구분한것.
(자료형마다 메모리 사용 크기가 다르다)
📢숫자(정수, 실수)와 논리형 vs 문자
숫자도 따옴표로 묶으면 문자열로 인식한다.
data1 = 85 #정수형(int)
data2 = '85' #문자열(str)
data3 = 'False' #문자열(str)
자료형의 데이터타입을 알 수 있다.
type(변수)
data1 = 1
data2 = 0.1
data3 = ''
data4 = True
print(type(data1)) #<class 'int'>
print(type(data1)) #<class 'str'>
print(type(data1)) #<class 'bool'>
print(type(data1)) #<class 'float'>
일치할 경우 True, 불일치할 경우 False 로 리턴
result1 = isinstance(1, int)
result2 = isinstance(0.1, float)
result3 = isinstance("hi", str)
result4 = isinstance([1,2,3], list)
result5 = isinstance({"name":"mario"}, dict)
# 모두 True
print(result1, result2, result3, result4, result5)
여러타입 비교하기
이 경우 "hi" 라는 값이 int, float, str 중 하나의 타입과 일치한다면 True를 리턴
# 괄호에 확인할 타입명 입력 result = isinstance("hi", (int, float, str)) print(result)
데이터타입을 변환하는것으로 파이썬에서 제공하는 함수
data1 = 1
data2 = 0.1
data3 = ''
data4 = True
print(type(str(data1))) #<class 'str'>
print(type(str(data2))) #<class 'str'>
print(type(str(data3))) #<class 'str'>
print(type(str(data4))) #<class 'str'>
data = '1' #문자열
print(int(data)) #1 #<class 'int'>
print(float(data)) #1.0 #<class 'float'>
단 ''안의 숫자형태가 소수일때 정수로 형변환 할 수 없다. (정수는 float로 가능)
data = '3.14'
print(int(data)) #소수문자열 -> 정수 : error
print(float(data)) #3.14 #<class 'float'>
data = '3'
print(int(data)) #3 #<class 'int'>
print(float(data)) #정수문자열 -> 소수 : 가능 3.0 #<class 'float'>
data1 = True
data2 = False
print(int(data1)) #1
print(int(data2)) #0
print(float(data1)) #1.0
print(float(data2)) #0.0
data1 = 3.99
print(int(data1)) #3(소수점삭제)
data2 = 3
print(float(data2)) #3.0(소수점생김)
var = ''
var = bool(var)
print(var) #False
data = 0
data = bool(data)
print(data) #False
var = ' '
var = bool(var)
print(var) #True
data = 1
data = bool(data)
print(data) #True
데이터입력 함수
데이터 출력 함수
연속출력은 , 를 이용한다.
user_name = 홍길동
user_age = 20
print(user_name,user_age) #홍길동 20
print는 자동으로 개행된다. (defalt 역슬래쉬n)
개행을 막고싶다면 end=''옵션을 사용한다.
print('3*5=',end='')
print(3*5)
#3*5=15
sep 인자로 ' '를 입력하면 출력되는 값들 사이에 한 칸의 공백대신 ''안의 내용이 출력된다.
print("naver", "kakao", "samsung", sep=';')
#naver;kakao;samsung;
user_name = '박솔비'
user_age = 20
print(f'user name : {user_name}')
print(f'user name : {user_name},user age : {user_age}')
#user name : 박솔비
#user name : 박솔비,user age : 20
print('user name : {}'.format(user_name))
print('user name : {}'.format(user_name),'user age : {}'.format(user_age))
print('user name : {}, user age : {}'.format(user_name,user_age))
#user name : 박솔비
#user name : 박솔비 user age : 20
#user name : 박솔비, user age : 20
format() 괄호 안의 숫자는 0,1,2...이다. {}안에 순서를 넣어주면 해당순서가 들어간다.
print('user name : {1}, user age : {0}'.format(user_name,user_age))
#user name : 20, user age : 박솔비
print('나의이름은 {} 이고, 나이는 {} 살입니다. {} 이름은 아버지가 지어주셨습니다.'
.format(user_name,user_age,user_name))
print('나의이름은 {0} 이고, 나이는 {1} 살입니다. {0} 이름은 아버지가 지어주셨습니다.'
.format(user_name,user_age))
#나의이름은 박솔비 이고, 나이는 20 살입니다. 박솔비 이름은 아버지가 지어주셨습니다.
#나의이름은 박솔비 이고, 나이는 20 살입니다. 박솔비 이름은 아버지가 지어주셨습니다.
%s -> 문자열
%d -> 정수
%f 실수 -> %[.n]F (소수점 n자리 표현)
user_name = '박솔비'
user_age = 20
print('User name : %s' % user_name)
print('user age : %.1f' % user_age)
print('user age : %d' % user_age)
print('user age : %s' % user_age)
#User name : 박솔비
#user age : 20.0
#user age : 20
#user age : 20
format 뒤에 ','를 붙히면 숫자표기를 할 수 있다.
print({}.format(2000,',')) #2,000
result = data1 + data2 일 때,
=,+ : 연산자
data1, data2 : 피연산자
+, -, *, /, %, //, **
❗숫자는 숫자끼리 연산
문자는 문자끼리 나열 +
문자 뺄셈 불가
num = 15
num2 = 30
print(num+num2) #45
str1 = 'Good'
str2 = 'Morning'
str3 = 'Everyone'
resulf2 = str1+str2+str3
print(f'result : {resulf2}')
#result : GoodMorningEveryone
곱셉 : 숫자는 연산 문자는 나열
나눗셈 숫자는
result = num1/num2 #3.33333
result = num1//num2 #3
result = num1%num2 #1
num1 = 10
num2 = 3
result = divmod(num1, num2)
#(3,1) 출력
# 인덱스 첫번째 0 두번째 1
print('몫 : {}'.format(result[0]))
print('나머지 : {}'.format(result[1]))
#몫 : 3
#몫 : 1
같은 수를 여러번 곱한 값
num1=2
num2=8
result = num1 ** num2
print(f'result : {result}') #256
n의m제곱근 공식
n**(1/m) #n의 m제곱근 구하기
import math함수
print(math.sqrt(100)) #10.0
#결과(10)를 2번 곱하면 (100)
print(math.pow(2,4)) #16.0
=, +=, -=, /=, %=, //=
각각에 해당하는 연산 후 할당한다.
< <= > >= == !=결과는 항상 bool !!!!
왼쪽부터 크다, 크거나작다, 작다, 작거나같다, 같다, 같지않다.
문자는 아스키코드로 비교한다.
문자 -> 숫자 아스키코드 함수 ord()
숫자 -> 문자 아스키코드 함수 chr()
print(chr(65)) #A
print(ord('S')) #83
and, or, not
: A와 B 모두 True 인 경우만 결과값으로 True이다.
: A와 B 중 하나면 True여도 결과값은 True이다.
: A의 상태를 부정하는 결과를 나타낸다.
e.g. not True = False / not Flase = True
import operator
산술, 연산, 비교 연산자들과 관련된 함수가 있는 모듈
num1 = 50
num2 = 10
print('{} + {} = {}'.format(num1,num2,operator.add(num1,num2)))
print('{} - {} = {}'.format(num1,num2,operator.sub(num1,num2)))
print('{} * {} = {}'.format(num1,num2,operator.mul(num1,num2)))
print('{} / {} = {}'.format(num1,num2,operator.truediv(num1,num2)))
print('{} % {} = {}'.format(num1,num2,operator.mod(num1,num2)))
print('{} // {} = {}'.format(num1,num2,operator.floordiv(num1,num2)))
print('{} ** {} = {}'.format(num1,num2,operator.pow(num1,num2)))
print ('{} == {} : {}'.format(num1,num2,operator.eq(num1,num2)))
print ('{} != {} : {}'.format(num1,num2,operator.ne(num1,num2)))
print ('{} > {} : {}'.format(num1,num2,operator.gt(num1,num2)))
print ('{} >= {} : {}'.format(num1,num2,operator.ge(num1,num2)))
print ('{} < {} : {}'.format(num1,num2,operator.lt(num1,num2)))
print ('{} <= {} : {}'.format(num1,num2,operator.le(num1,num2)))
flag1 = True
flag2 = False
print ('{} and {} : {}'.format(flag1,flag2,operator.and_(flag1,flag2)))
print ('{} or {} : {}'.format(flag1,flag2,operator.or_(flag1,flag2)))
print ('{} not {} : {}'.format(flag1,flag2,operator.not_(flag1)))