[Zerobase][Python Basic] 총정리

솔비·2023년 11월 26일

💻 Python. w/zerobase

목록 보기
2/33
post-thumbnail

1. 파이썬 기본정보

A. 파이썬 실행과정**

파이썬에는 IDLE Shell이라는 툴과 코드편집기라는 툴이 있다.

  • IDLE Shell : 실제 프로그램을 만들 때 사용하지는 않는 간단한 코딩 테스트 툴
  • 코드편집기 : 실제로 프로그램을 만드는 툴

✔️ 작동순서

  1. 셸 모드를 실행한다.
  2. 새 파일을 연다. (이 창이 코드편집기)
  3. 코드편집기를 작성한다.
  4. 저장한다. [Ctrl+S]
  5. 실행시킨다. [Run or F5]
  6. 셸 모드에서 실행된다.

B. 컴파일러와 인터프린터

사람이 쓰는 개발언어(C, C++, Java, Python 등)를 기계어(010110...)로 번역을 해주는것이 컴파일러(Compiler)와 인터프리터(Interpreter)
차이는 아래와 같다.

C. Pycharm

위 파이썬 실행과정의 불편함 해소가능 (코드편집기에서 작성한 내용이 셸 모드에서 실행되는 등)
Python File을 열고, 소스를 작성한 후 Shift+F10을 누르면 하단에 바로 출력!


2. 메모리와 변수

A. 데이터

숫자, 문자, 음원, 영상, 이미지등
모든 관찰이나 측정을 통해 수집된 것들

📢 데이터는 수집, 가공을 거쳐 정보가 된다.

B. 메모리

숫자, 문자, 음원/영상과 같은 데이터가 저장되어있는곳
(우리가 입력하는 모든것은 메모리에 저장된다.)

C.변수

* 프로그램에서 =는 할당의 뜻이다.

데이터가 저장되어있는 특정 공간
(하나의 값을 저장할 수 있는 저장공간)

📢 메모리의 특정공간은 주소로 이루어져 있다.
그 주소를 우리가 원하는 명칭으로 선언해주는것을 변수선언, 그 주소의 이름을 변수명, 해당 변수명에 데이터를 입력해주는것을 변수 초기화라고 한다.

➕ 변수는 왜 사용하는가?

데이터를 재사용하기 위해

# 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으로 변경해주기만 하면 끝!

✔️ 올바른 변수명

  1. 영문을 사용할것
  2. 첫번째는 소문자로 e.g.myName
  3. 데이터의 의미를 파악할 수 있는 명사로 지을것.
  4. 카멜표기법 또는 스네이크 표기법
  5. 숫자는 첫번째에는 NO
  6. 특수문자 NO (언더바_만 사용가능)
  7. 예약어 NO (이미파이썬에서 쓰고있는 언어)

3.자료형

효율적인 메모리 사용을 위해 데이터를 정수형, 실수형, 문자형, 논리형으로 구분한것.
(자료형마다 메모리 사용 크기가 다르다)

  • 정수형(int) : 10,85,5..
    메모리가 허용하는한 무한사용가능
  • 실수형(float) : 3.14,180.5 ..
    대략 17~18번째에서 데이터 손실이 일어남
  • 문자열(str) : '안녕하세요' 'korea'
  • 논리형(bool) : True, False

📢숫자(정수, 실수)와 논리형 vs 문자
숫자도 따옴표로 묶으면 문자열로 인식한다.

data1 = 85		#정수형(int)
data2 = '85'	#문자열(str)
data3 = 'False'	#문자열(str)

A. 데이터 타입

자료형의 데이터타입을 알 수 있다.
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'>

🌟 isinstance 함수

일치할 경우 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)

B.자료형변환(Type Casting)

데이터타입을 변환하는것으로 파이썬에서 제공하는 함수

✔️ 숫자, 논리 -> 문자 : str()

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'>

✔️ 문자, 논리, 숫자 -> 숫자 : int(), float()

1. 문자 -> 숫자

  • 문자가 '1','0.1'처럼 숫자 자체가 문자라면 가능
  • 문자가 '안녕'처럼 문자자체라면 불가능
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'>

2. 논리형 -> 숫자

  • True : 1 / 1.0
  • False : 0 / 0.0
data1 = True
data2 = False

print(int(data1))		#1
print(int(data2))		#0
print(float(data1))		#1.0
print(float(data2))		#0.0

3. 숫자 -> 숫자

  • 정수 -> 실수 : 1 -> 1.0 (소숫점 .0생김)
  • 실수 -> 정수 : 3.9 -> 3 (소숫점을 잘라버림)
data1 = 3.99
print(int(data1))		#3(소수점삭제)
data2 = 3
print(float(data2))		#3.0(소수점생김)

✔️ 문자, 숫자 -> 논리형 : bool()

  • 빈문자 : 데이터없음 False
  • 0 : False
var = ''
var = bool(var)
print(var)		#False

data = 0
data = bool(data)
print(data)		#False
  • 문자 : 데이터있음 True
  • 1 : True
var = ' '
var = bool(var)
print(var)		#True

data = 1
data = bool(data)
print(data)		#True

4.데이터 입력과출력

A. input()

데이터입력 함수

B. print()

데이터 출력 함수

특징1. 연속출력

연속출력은 , 를 이용한다.

user_name = 홍길동
user_age = 20

print(user_name,user_age) #홍길동 20

특징2. 자동개행 & end=''

print는 자동으로 개행된다. (defalt 역슬래쉬n)

개행을 막고싶다면 end=''옵션을 사용한다.

print('3*5=',end='')
print(3*5)

#3*5=15

🌟 sep = ' '

sep 인자로 ' '를 입력하면 출력되는 값들 사이에 한 칸의 공백대신 ''안의 내용이 출력된다.

print("naver", "kakao", "samsung", sep=';')

#naver;kakao;samsung;

특징3. format

A. f'{}'

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

B. format함수

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

C. index 집어넣기

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 살입니다. 박솔비 이름은 아버지가 지어주셨습니다.

D. 형식문자

%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(2000,',')

format 뒤에 ','를 붙히면 숫자표기를 할 수 있다.

print({}.format(2000,','))		#2,000

5. 연산자

result = data1 + data2 일 때,
=,+ : 연산자
data1, data2 : 피연산자

A. 산술연산자

+, -, *, /, %, //, **

- 덧셈 +, 뺄셈 - 곱셈 *

❗숫자는 숫자끼리 연산
문자는 문자끼리 나열 +
문자 뺄셈 불가

num = 15
num2 = 30

print(num+num2)		#45

str1 = 'Good'
str2 =  'Morning'
str3 =  'Everyone'
resulf2 = str1+str2+str3
print(f'result : {resulf2}')
#result : GoodMorningEveryone

- 곱셈 * 나눗셈 /

곱셉 : 숫자는 연산 문자는 나열
나눗셈 숫자는

  • 결과는 항상 float
  • 0을 나누면 항상 0
  • 0으로는 나눌 수 없음 error
    나눗셈 문자는 불가

- 몫(//) 나머지(%)


result = num1/num2		#3.33333
result = num1//num2		#3
result = num1%num2		#1

✔️ divmod()함수 = (몫,나머지)

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제곱근 구하기

✔️ sqrt() , pow()

import math함수

  • sqrt(결과)=n -> 제곱근 구하는 함수 #N의 2 제곱근
  • pow(n,m) -> n을 m번 곱하는 함수

print(math.sqrt(100)) #10.0
#결과(10)를 2번 곱하면 (100)

print(math.pow(2,4)) #16.0

B. 할당연산자

=, +=, -=, /=, %=, //=

각각에 해당하는 연산 후 할당한다.

C. 비교연산자

< <= > >= == !=

결과는 항상 bool !!!!

왼쪽부터 크다, 크거나작다, 작다, 작거나같다, 같다, 같지않다.

➕ord() chr()

문자는 아스키코드로 비교한다.

문자 -> 숫자 아스키코드 함수 ord()
숫자 -> 문자 아스키코드 함수 chr()

print(chr(65))		#A
print(ord('S'))		#83

D. 논리연산자

and, or, not

- A and B

: A와 B 모두 True 인 경우만 결과값으로 True이다.

- A or B

: A와 B 중 하나면 True여도 결과값은 True이다.

- not A

: A의 상태를 부정하는 결과를 나타낸다.
e.g. not True = False / not Flase = True

➕ Operator 모듈

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)))

제로베이스 데이터취업스쿨
Daily Study Note
profile
Study Log

0개의 댓글