변수
값을 담을 수 있는 메모리 공간의 이름을 뜻한다. 변수는 객체의 주소를 기억하고, 해당 주소의 메모리 공간을 찾아가 값을 가져온다. 변수에 값을 담을 때는 할당 연산자 '='을 사용한다.
- 선언 : 변수 생성시 초기값 없이 만드는 것
- 정의 : 선언된 변수에 값을 넣는 것
- 전역변수 : 블록 밖에서 생성된 변수
- 지역변수 : 블록 안에서 생성된 변수
변수 타입
int(정수형)
,float(실수형)
,str(문자형)
,bool(부울형)
변수명 생성 규칙
- 문자, 숫자, 언더바의 조합으로 변수명을 만들 수 있음
- 단, 숫자가 맨 앞에 올 수 없고, 변수명 중간에는 공백이 들어갈 수 없음
- 키워드(예약어, 프로그램 라이브러리 이름)는 변수명으로 사용하지 않음
- 변수에 담는 값의 의미를 알 수 있도록 직관적으로 이름을 작명함
연산자
산술연산자
- 숫자에 사용 : +, -, , /, %, //, *
- % : 나눈 나머지 값
- // : 나눈 몫 값
- ** : 거듭제곱
- 문자에 사용 : +, *
- + : 문자와 문자를 합쳐줌
- * : 문자열은 숫자만큼 반복해서 합쳐줌
비교연산자
- >, <, >=, <=, ==, !=, <>
문자열 함수
print()
: 출력 기능을 수행하는 함수input()
: 입력 기능을 수행하는 함수, 받아온 값은 문자열 타입len()
: 문자열의 길이나 리스트안의 데이터 개수를 확인할 때 사용
format()
: 문자열 안에 특정 값들을 특정 위치에 넣고자 할 때 사용- 특정 위치는 중괄호
{}
기호로 표시함 - 중괄호 안에 숫자를 넣으면 그 순서의 값이 표시됨
- 특정 위치는 중괄호
# format() 함수 사용방법
print("{} {} {} = {}".format(num1, mode, num2, result))
print("{0} {1} {2} = {3}".format(num1, mode, num2, result))
print(f"{num1} {mode} {num2} = {result}") # format의 약식
zfill()
: 문자열의 자릿수보다 괄호 안의 자릿수가 큰 경우 왼쪽에 0 채움
# zfill() 함수 사용방법
for i in range(1, 13, 1) :
print("{}월입니다".format(str(i).zfill(2)))
조건문
조건이 1개 이상인 경우 선택적으로 코드를 실행시키고자 할 때 사용된다. 비교연산자와 논리연산자를 사용하며, 일반적으로 2개 이상의 값을 비교한다. 조건의 결과는 True나 False인 부울형이다.
- if만 있는 경우 : 조건이 참일때만 수행하고자 할 때
- if와 else가 있는 경우 : 조건이 참과 거짓일때만 수행하고자 할 때
- if, elif, else가 있는 경우 : 조건이 여러개인 경우
# 조건문 예제
num1 = float(input("숫자 1 : "))
num2 = float(input("숫자 2 : "))
mode = (input("+ 또는 - : "))
if mode == "+" :
result = num1 + num2
result
elif mode == "-" :
result = num1 - num2
result
else :
print("잘못 입력 하셨습니다")
반복문
반복 수행되는 작업을 편하고 효율적으로 하기 위해 사용된다. 반복되는 패턴을 찾아서 코드를 작성한다. 반복문의 종류에는 for문과 while문이 있다. continue나 break를 사용해서 반복을 건너뛰거나 종료할 수 있다.
continue
: 현재 반복을 건너뛰고 다음 반복으로 넘어가기break
: 해당 블록의 반복을 종료시킴
for문
- 일정한 범위동안 반복하는 반복문
range(시작번호, 끝번호+1, 증가/감소값)
: 범위를 만들어내는 함수, 리스트로 저장
# for문 예제
for num in range(1, 11, 1) :
print(num)
while문
- 조건이 참이면 무조건 반복하는 반복문
+=
: 자기 자신에 특정 숫자를 더할 때 사용
# while문 예제
start = 1
end = 10
total = 0
while 1 :
total += start
if start == end :
break
start += 1
print(total)
리스트
여러 개의 값을 순서대로 관리하는 변수이다. 리스트에 있는 값을 추출할 때는 인덱스 번호를 이용하며, 리스트의 기호는 대괄호 []
를 사용한다.
# python만 하나의 변수, 리스트에 여러 값 또는 여러 타입 넣기 가능
a = ""
a = 0
a = 0.0
a = []
- 리스트 생성 방법 : 대괄호나
list()
함수를 이용
# 대괄호를 이용한 방법
list1 = [1, 2, "김"]
# list() 함수를 이용한 방법
list2 = list((1, 2, "김"))
- 리스트 확인 방법
list3[-2] # 뒤에서부터 확인
list3[0:5] # 범위를 지정해서 확인
list3[-3:] # 뒤에서부터 범위를 지정해서 확인
list3[10:] # 일정 위치부터 확인
list3[:-40] # 앞에서부터 일정 위치까지 확인
- 리스트 값 추출하기
# 리스트의 인덱스 번호를 이용하는 방법
list_temp = [1, 2, "이순신", "홍길동", 3.141592]
for i in range(0, len(list_temp), 1) :
print(list_temp[i])
# 리스트의 인덱스 위치에 들어있는 값 자체를 사용하는 방법
list_temp = [1, 2, "이순신", "홍길동", 3.141592]
for val in list_temp :
print(val)
- 리스트 값 추가/삭제하기
append()
: 리스트에 값을 추가할 때 사용remove()
: 리스트 안의 값을 이용하여 삭제del
: 리스트의 인덱스 번호를 이용해서 삭제
# 리스트 값 추가하기 - 홍길동1~100까지의 값을 리스트로 만들고 출력
name_list = []
for i in range(1, 101, 1) :
name_list.append("홍길동{}".format(i))
print(name_list)
# 리스트 값 삭제하기 - remove() 사용
name_list.remove("홍길동10")
# 리스트 값 삭제하기 - del 사용
del name_list[1]
- 리스트 값 존재 여부 확인
in
: 리스트에 있는지 확인not in
: 리스트에 없는지 확인
- 인덱스 함수
zip()
: 인덱스 별로 묶어서 관리하는 함수 (단, 동일한 길이의 인덱스를 가져야함)
# zip() 함수 사용방법
a_list = [1, 2, 3]
b_list = ["a", "b", "c"]
c_list = [4, 5, 6]
for a, b, c in zip(a_list, b_list, c_list) :
print(a, b, c)
딕셔너리
1개의 값은 key(변수)
와 value(값)
형태로 구성된다. 리스트에서는 인덱스의 순차적 순서가 있었지만, 딕셔너리는 순서가 의미 없다. 딕셔너리의 기호는 중괄호 {}
를 사용한다.
key
: 인덱스 번호처럼 고유한 값이어야 함- key에는 리스트를 넣을 수 없음
- 딕셔너리에 해당 key가 없으면 추가, 있으면 수정됨
[{}]
: 행렬을 나타내는 형태- 딕셔너리는 행을 의미함
- 딕셔너리 속의 데이터는 열을 의미함
- 딕셔너리 생성 방법 : 중괄호나
dict()
함수를 이용
# 딕셔너리 선언 및 정의하기
dict_1 = {}
dict_2 = dict()
# 딕셔너리 형태 {key : value}
data = {"name" : "홍길동", "age" : 34, "area" : "서울"}
- 딕셔너리 값 추출하기 :
dick[key]
나dict.get(key)
이용
# 딕셔너리 값 추출하기
# key가 없을 때 오류가 발생하지 않으려면 get()을 사용
dict_1["name"]
dict_1.get("name")
- 딕셔너리 값 입력/삭제하기
dict[key] = value
: 값 입력하기del dict[key]
: 값 삭제하기
# 딕셔너리 값 입력하기
dict1["name"] = "홍길동"
# 딕셔너리 값 삭제하기 - key가 없는데 삭제하면 오류 발생
del dict1["name"]
- 딕셔너리 조회하기
items()
: 모든 key와 value들을 리스트의 튜플 형태로 조회keys()
: 모든 key들을 리스트 형태로 조회values()
: 모든 value들을 리스트 형태로 조회
튜플
리스트와 구조가 동일하지만 튜플은 수정이 안된다. 튜플의 기호는 소괄호 ()
를 사용하며, 튜플 안에는 리스트나 딕셔너리도 넣을 수 있다. 튜플을 생성할 때 하나의 값만 정의하려면 값 뒤에 콤마를 붙여야한다. 콤마가 없으면 튜플이 아닌 정수형, 문자형 타입으로 저장된다.
# 튜플 생성 및 출력하기
t = (1, [2, 3], {"a":"홍", "b":"이"})
for i in range(0, len(t), 1) :
print(t[i])
사용자 정의 함수
자주 반복해서 사용해야하는 프로그램을 사용자가 정의해서 사용하는 기능이다. 값을 함수에 전달할 수도 있으며, 결과를 튜플 형태로 반환받을 수도 있다.
def
: 함수를 정의하는 명령return
: 호출한 곳으로 결과값을 반환해주는 명령
- 함수 이름 정의하기
getMath()
: 값을 리턴받는 경우에 주로 사용setMath() or initMath()
: 값을 저장하는 경우에 주로 사용
매개변수
: 함수 정의 시 괄호 안에 있는 변수인자
: 함수 실행 시 괄호 안에 있는 값반환값
: 호출한 곳으로 반환된 결과값, 여러 개가 될 수도 있음
# 사용자 정의 함수 예제
def getPlus(a, b) :
result = a + b
return a, b, result # 반환값은 튜플 형태
a, b, result = getPlus(30, 60)
print(a, b, result)
getPlus(30, 60)[0] # 인덱스로 하나씩 출력도 가능
- 매개변수의 값을 미리 정의해놓을 수도 있음 (단, 첫번째 매개변수는 정의할 수 없음)
# 사용자 정의 함수 - 매개변수를 미리 정의하는 방법
def getPlus(a, b = 2) :
result = a + b
return result
getPlus(10) # b = 2
getPlus(10, 5) # b = 5로 바뀜
클래스
변수 또는 함수를 정의하며 형태만 존재한다. 클래스 이름은 대문자로 시작한다.
- 생성자 : 형태를 메모리에 올리는 함수. 생성자 호출해야 클래스 사용 가능
- 일반함수 : 클래스 내에서 함수들을 정의할 때는 매개변수
self
넣어야함 - 멤버변수 : 클래스 내에서 어디서든지 접근 가능한 변수
self
와 함께 사용
self
: 클래스 멤버에 접근할 수 있는 이름을 의미.self.
으로 사용함.
: 접근 지정자라고 함. 주소를 찾아간다는 의미
- 생성자가 없는 클래스 생성
- 클래스를 생성시키는 순간 클래스 내에 생성자가 자동 호출됨
- 클래스 내부에 생성자 함수가 없으면 "디폴트 생성자"가 호출됨
- 클래스 변수 뒤에 점을 이용해서 클래스 내에 있는 변수, 함수에 접근함
# 클래스 정의하기
class Math :
def getPlus(self, a, b) :
return a + b
# 클래스 생성하기
math = Math()
math
# 클래스 멤버함수 호출하기
math.getPlus(10, 5)
- 생성자가 있는 클래스 생성
__init__(self)
: 생성자 함수 이름- 멤버변수를 사용할 때는
self.
을 붙여서 사용
# 생성자가 있는 클래스 생성하기
# 클래스 가장 상위에 있는 변수는 전역변수의 개념
# 클래스에서는 전역변수를 멤버변수라고 칭함
# 생성할 때 self를 붙이지 않아도 되며, 사용할 때는 self를 붙이고 사용
class Math :
a = 10
b = 5
r = 0
# 최초의 클래스 내부에 값을 셋팅하거나 함수를 수행해놓으려면 생성자 안에서 처리
# 값이나 함수는 반드시 self를 이용해서 접근해야함
def __init__(self) :
self.aa = 100
self.bb = 50
self.getPlus()
def getPlus(self) :
# r = self.a + self.bb : r은 지역변수라 self.r과 메모리 공간 다름
self.r = self.a + self.bb
# 클래스나 클래스 멤버함수는 호출하기 전까지는 빈 껍데기
math = Math()
math.getPlus()