Python 기초

호호빵·2022년 4월 6일
0

Python

프로그래밍 언어

  • 인터프리터 언어
  • 객체지향 언어

컴파일러 , 인터프리터


구분컴파일러인터프리터
번역단위전체행(줄)
목적 프로그램생성함생성하지 않음
실행속도빠름느림
번역속도느림빠름
관련언어C, JAVAPython, 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 

if, for, while 더 알기


list, tuple, dictionary

list


# 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

# 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


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

list, dict, set 더 알기


함수와 Class

함수 정의


# 함수 : def로 sum 함수 선언
def sum(a, b):       
	return a + b
    
a = 1
b = 2
c = sum(a, b)           ->     3

함수 더 알기

class


# 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하고 10 으로 
    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 : 컴퓨터가 처리하는 단위

# 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 실행)


profile
하루에 한 개념씩

0개의 댓글