프로그래밍 언어
구분 | 컴파일러 | 인터프리터 |
---|---|---|
번역단위 | 전체 | 행(줄) |
목적 프로그램 | 생성함 | 생성하지 않음 |
실행속도 | 빠름 | 느림 |
번역속도 | 느림 | 빠름 |
관련언어 | C, JAVA | Python, BASIC, LISP, APL, SNOBOL |
# 주석 : 개발자의 메모
# 콜론 : if, while, for 와 같은 코딩블럭에 사용
# 들여쓰기 : 코딩블럭을 표시하기 위해 사용
# 절대값을 구합니다.
a = 5
b = 3
result = 0
if a > b :
result = a - b
else :
result = b - a
# 숫자 자료형
print(5) -> 5
print(5 + 8 ) -> 13
# 문자 자료형
print("대한민국") -> 대한민국
print("England") -> England
# boolean 자료형 (True, False)
print(10 > 3 ) -> True
print(not (5 < 3)) -> True (# 5 < 3 = true, not(5<3) = false)
print(3 != 3) -> False
print(not false) -> True
# 변수
name = "연탄이"
animal = "강아지"
print("우리집 " + animal + "의 이름은 " + name + "에요")
# -> 우리집 강아지의 이름은 연탄이에요
# 1 "%" 사용
print("나는 %d살입니다." % 20) # 나는 20살입니다, 정수
print("나는 %s을 좋아합니다." % "파이썬") # 나는 파이썬을 좋아합니다., 문자열
print("Apple 은 %c로 시작해요." % "A") # Apple 은 A로 시작해요.,한 글자
print("나는 %s살입니다." % 20) # 나는 20살입니다 (%s 로도 정수값 표현 가능)
# 2 순서
print("나는 {0}색, {1}색 선택".format("파란", "빨간")) # 나는 파란색과 빨간색 선택
print("나는 {1}색, {0}색 선택".format("파란", "빨간")) # 나는 빨간색과 파란색 선택
# 3 format
print("나는 {age}살이며, {color}색을 좋아해요.".format(age=20, color="빨간"))
# 나는 20살이며, 빨간색을 좋아해요
# 4 "f"
age = 20
color = "빨간"
print(f"나는 {age}살이며, {color}색을 좋아해요.")
# -> 나는 20살이며, 빨간색을 좋아해요. (f를 앞에 써주면 앞의 변수 사용가능)
# \n : 줄바꿈
print("백문이 불여일견 \n백견이 불견일타") -> 백문이 불여일견
백견이 불여일타
# 기타
print("나는 \'한국인\'이다.") -> 나는 '한국인'이다. (\', \" 로 따옴표 표시)
print("C:\\Users\\Nadocoding\\Desktop\\PythonWorkspace>")
# C:\Users\Nadocoding\Desktop\PythonWorkspace>
# \U 등 탈출문자와 유사할 수 있어서 \\로 표시
# \r : 커서를 맨앞으로 이동
print("Red Apple\rPine") -> PineApple
# \b : 백스페이스 (한 글자 삭제)
print("Redd\bApple") -> RedApple
# \t : tab 역할
print("Red\tApple") -> Red Apple (8칸 띄움)
# 산술연산자
+ , - , * , / , // (나눈 값의 몫), % (나눈 값의 나머지), **(제곱)
# 비교연산자
==, >=, <=, >, < , !=
# 할당연산자 : 변수의 값을 할당과 연산을 동시에 처리 하는 것,
# : +=는 값을 더해서 변수에 넣는 것.
+=, -=, *=, /=, %=, //=
a += 1 <-- ( a = a + 1 )
# 논리연산자
and, or, not
# 비트연산자 : 비트 단위로 연산할 때 사용
&(and), |(or), ^(xor),~(Complement), <<, >>(Shift)
# if 문
temp = int(input("기온은 어떄요?"))
if temp >= 30 :
print("so hot")
elif temp >= 10:
print("so so")
elif temp >= 0:
print("so cool")
else:
print("so cold") -> 기온은 어때요 ? # 20
-> so so
# 반복문 : 리스트의 요소들을 하나씩 꺼내쓰는 형태
i) for
fruits = ['사과', '배', '오렌지']
for fruit in fruits
print(fruit) -> 사과 배 오렌지
ii) while # 어떤 조건을 만족할 때까지 진행
i = 0
while( i < 5 ):
print(i)
i += 1 -> 0 1 2 3 4 5
# list
--------------- indexing, slicing -------------
a_list = [1, 2, 3]
print(a_list[0]) -> 1 (a_list 에서 0번째 값)
print(a_list[-1]) -> 3 (a_list에서 마지막에서 첫번째 값)
print(a_list[0:2]) -> [1, 2] (a_list에서 0번째부터 2개의 값)
----------------- 합치기, 수정하기 ----------------
a = [4,5,6]
b = [1,2,3]
c = a + b
print(c) -> [4,5,6,1,2,3]
a = [1,2.3]
a[0] = 4 (0번째를 4로 수정하기)
print(a) -> [4,2,3]
# tuple : list와 비슷하지만 insert, remove 불가능
# : 변경되면 안되는 값일 때 사용
a = (1,2,3,4,5,6)
print(a[1:]) -> (2,3,4,5,6) (첫번째부터 모두 가져오기)
(name, age, hobby) : ("김종국", 20, "coding")
print(name, age, hobby) -> 김종국 20 coding # 한번에 적기 가능
# dict : 연관배열 또는 해시(Hash), key와 value로 구성
dic = {'name': 'joseph', 'phone': 0101234}
print(dic['name']) -> joseph
dic['city'] = 'seoul' (추가하기)
print(dic) -> {'name': 'joseph', 'phone': 0101234, 'city': 'seoul'}
del dic['phone'] (삭제하기)
print(dic) -> {'name': 'joseph', 'city': 'seoul'}
# 함수 : def로 sum 함수 선언
def sum(a, b):
return a + b
a = 1
b = 2
c = sum(a, b) -> 3
# class : calculator 클래스를 작성하고 cal1, cal2로 생성
# : 이 변수들은 클래스 내의 함수에 접근가능
class Calculator:
def __init__(self):
pass
def add(self, val1, val2):
return val1 + val2
cal1 = Calculator()
cal2 = Calculator()
print(cal1.add(3,4)) -> 7
print(cal2.add(5,6)) -> 11
# 클래스 상속 : 상속받은 클래스는 상위 클래스에 접근 가능
class divClass:
def div(self, val1, val2)
return val1/val2
class Calculator(divClass):
def __init__(self):
pass
def add(self, val1, val2):
return val1 + val2
cal1 = Calculator()
print(cal1.add(3,4)) -> 7
print(cal1.div(3,4)) -> 0.75
# calculator 클래스는 divClass를 상속 받음.
# 따라서 cal1은 divClass의 div함수까지 접근 가능.
# try - except : 예상치 못한 에러에 대처하기 위한 방법
try:
print('문제없는 구간') -> 문제없는 구간
a = 1/0 -> division by zero
except Exception as ex: (문제없는 구간을 print하고 1을 0 으로
print(ex) 나눈 에러에대해 예외처리함.)
try:
print('문제없는 구간') -> 문제없는 구간
a = 1/0 -> division by zero
print('문제없는 구간2')
except ZeroDivisionError:
print('0으로 나누었습니다.') -> 0으로 나누었습니다.
except Exception as ex:
print(ex)
print('문제없는 구간3') -> 문제없는 구간3
try:
print('문제없는 구간') -> 문제없는 구간
a = [0,1,2]
print(a[4])
except IndexError:
print('인덱싱 에러입니다.') -> 인덱싱 에러입니다.
except Exception as ex:
print(ex)
finally:
print("여기는 무조건 들어옵니다.") -> 여기는 무조건 들어옵니다.
# Thread : 2개 이상의 프로그래밍을 시간 할당을 통해 동시에 처리하는 것처럼 하는 기능
def sum(name, value):
for i in range(0, value):
print("thread ", name ," : ", i)
t1 = threading.Thread(target=sum, args=('1번', 20))
t2 = threading.Thread(target=sum, args=('2번', 20))
t1.start()
t2.start()
print("Main Thread")
# thread 1번 : 0
# thread 1번 : 1
# thread 1번 : 2
# thread 2번 : 0
# thread 2번 : 1
# Main Thread
# thread 2번 : 2
# thread 2번 : 3
# thread 2번 : 4
# thread 2번 : 5
# thread 1번 : 3
# thread 1번 : 4
# thread 1번 : 5
# .
# .
# .
# .
# thread 2번 : 19 (시간을 조율하며 번갈아 2개의 thread 실행)