데이터 취업 스쿨 스터디 노트 - 파이썬 (기초1 ~ 기초5)

data-yeon·2025년 2월 5일

Data Science

목록 보기
2/10
post-thumbnail

01_파이썬소개 및 설치

1991년 개발자 귀도 반 로섬이 만듦. 
처음 소규모 프로젝트에 사용 위해서 만듦. 
몬티파이튼의 성배 라는 프로그램에 영향받아 Python 명명

파이썬의 특징 
- 무한 정수를 처리 할 수 있다.
- 문법 구조가 쉽다.
- 다양하고 뛰어난 모듈이 많다. 

02_처음 만들어 보는 프로그램

파이썬 IDLE를 실행, 
파이썬의 shell 은 간단한 코드를 작성 할 때 사용된다. 
IDLE (Integrated Development and Environment) =>통합 개발 환경 
통합 개발 환경 툴이란 프로그램 개발에 필요한 코드 작성, 디버깅, 실행 등을 위한 툴을 말하는 것으로 쉽게 생각해서 코딩 툴 이라 생각하면 된다.

03_프로그램 실행 과정

소스파일 (xxx.py) ---컴파일---> 기계어 (binary code) ->기계(PC)에서 실행 
> 컴파일러 : 우리가 작성한 코드를 컴퓨터가 이해할 수 있는 기계어로 바꿈 

필요할 때 마다 바로바로 소스파일을 오는대로, 실시간으로 기계어로 바꾼다 
> 인터프리터 :  컴파일러와 달리 실행파일을 만들지 않고, 실행이 필요 할 때 기계어로 변환 

> 컴파일러와 인터프리터 차이 
- 컴파일 언어는 소스 전체를 실행 파일로 만들고 기계에서 실행 (번역과 같다 ex. C/C++, java)
- 인터프리터 언어는 필요한 소스소드만 그때 그때 실행함, (동시 통역과 같음. ex. Python)

04_PyCharm 설치

05_데이터와 메모리 그리고 데이터 출력

	데이터가 저장되어있는 메모리 공간을 변수라 한다. 
    변수를 이용해 데이터에 접근해 데이터를 수정하거나, 삭제 등을 할 수 있다. 

06_변수

변수란? 데이터가 저장되어 있는 메모리 공간 
메모리의 주소를 직접 사용하지 않고, 변수에 이름을 붙여 변수명이라 한다 

 number        =    10 
(변수선언)<--변수 초기화--(변수 초깃값)

🔹 = (대입 연산자)

	✔ 변수에 값을 저장할 때 사용
	✔ 오른쪽 값을 왼쪽 변수에 할당(저장)함
x = 10
y = "hello"
🔹 == (비교 연산자)

	✔ 두 값이 같은지 비교할 때 사용
	✔ 결과는 True(참) 또는 False(거짓) 반환
x = 10
y = 20

print(x == y)  # False (10과 20은 다르다)
print(x == 10) # True (x는 10이므로 참)

07_변수를 사용하는 이유

변수를 사용하는 이유는 데이터를 효율적으로 저장하고 재사용하기 위해서다.
만약 변수를 사용하지 않으면, 같은 값을 계속 반복해서 입력해야 하고, 코드가 길고 관리하기 어렵다. 
	print(10 + 5)
	print(10 * 2)
	print(10 - 3)
	x = 10  # 10을 x라는 변수에 저장
    print(x + 5)
	print(x * 2)
	print(x - 3)
🔹 1. 값을 저장하고 관리하기 위해
🔹 2. 코드 재사용성과 가독성 증가
🔹 3. 유지보수와 확장성 증가
🔹 4. 메모리 효율적인 사용
🔹 5. 동적인 값 처리 가능

08_변수명은 이렇게 하세요

1️⃣ 변수명 작성 규칙 (Syntax Rules)
	# 	1. 영문자(소문자, 대문자), 숫자, 밑줄(_)만 사용할 수 있음
    
        print(x + 5)
        print(x * 2)
        print(x - 3)
        
    # 	2. 숫자로 시작할 수 없음
    
    	1st_variable = 100  # ❌ 오류 발생 (변수명은 숫자로 시작할 수 없음)	
        
    # 	3. 공백(스페이스) 포함 불가
    
    	my variable = 10  # ❌ 오류 발생 (변수명에 공백 포함 불가)
        
    # 	4. 파이썬의 예약어(keyword)는 변수명으로 사용할 수 없음
    
    	def = 5  # ❌ 오류 발생 (예약어 사용 불가)
		class = 10  # ❌ 오류 발생
        
    # 	5. 대소문자 구분됨
    	
2️⃣ 변수명 권장 스타일 (Naming Conventions)
	# 	1. 소문자와 밑줄(_)을 사용하여 작성 (snake_case)
    
        user_name = "Alice"  # ✅ 권장 방식
        total_price = 1500   # ✅ 권장 방식
        
    # 	2. 클래스명은 PascalCase 사용
    
    	class Person:
    		pass
            
    # 	3.	상수(Constant)는 대문자로 작성
    
    	PI = 3.141592
		MAX_VALUE = 100	
        
    # 	4.	밑줄 두 개(__)로 시작하는 변수는 내부적으로 사용되는 변수
    
    	class Test:
    		def __init__(self):
        		self.__private = 10  # 클래스 내부에서만 접근 가능 (private 변수)
                
    # 	5.	밑줄 하나(_)로 시작하는 변수는 내부적으로 사용되는 변수
    
    	_internal_value = 42  # 암묵적으로 내부에서만 사용한다는 의미
        
    # 	6.	밑줄 하나(_)로 끝나는 변수는 파이썬의 예약어와 구분할 때 사용
    
    	class_ = "Python"  # `class`는 예약어이므로 `_`를 붙여 사용
        
    # 	7.	밑줄 하나(_)만 사용하면 최근 연산 결과를 임시 저장하는 용도로 사용
    
    	>>> 10 + 5
		15
		>>> _
		15
3️⃣ 변수명 작성 시 권장되지 않는 스타일
	# 알아보기 어려운 변수명
    
    a = 10  # 의미 없는 변수명
	b = 20  # 가독성이 떨어짐
        
    # 혼동될 수 있는 변수명
    
    l = 1  # 소문자 L (숫자 1과 헷갈릴 수 있음)
	O = 0  # 대문자 O (숫자 0과 헷갈릴 수 있음)
            
    # 이름이 너무 길거나 불필요하게 복잡한 변수명
    
    this_is_a_very_long_variable_name = "Too long"  
    # 길고 복잡함

09_자료형

파이썬에서 사용되는 자료형 중 기본자료형
------------------------------------------------------------
1️⃣ 기본 자료형 (Primitive Types)
	🔹 정수형 (int)
    	정수를 나타내는 자료형
        크기의 제한이 없음 (C나 Java처럼 오버플로우가 발생하지 않음)
        
          a = 10
          b = -5	
          c = 0
    	  print(type(a))  # <class 'int'>
          
	🔹 실수형 (float)
    	소수점을 포함하는 숫자
        실수는 대략 소수점 이하 17~18번째에서 데이터 손실이 일어남
        지수 표현(Exponential notation) 가능 (1.2e31.2 × 10³)
        
        	x = 3.14
			y = -2.71
			z = 1.2e3  # 1200.0

			print(type(x))  # <class 'float'>
            
    🔹 문자열 (str)
    	문자들의 집합 (유니코드 지원)
        작은따옴표(') 또는 큰따옴표(")로 감싸서 표현
        
        s1 = "Hello"
        s2 = 'Python'

		print(type(s1))  # <class 'str'>
     
     	여러 줄 문자열 (Triple Quotes)
        
     	text = """이것은
		여러 줄로 된
		문자열이다."""
        
     🔹 불리언 (bool)
     	True() 또는 False(거짓) 값을 가짐
        0, "", [], {}, NoneFalse로 평가됨
        
        is_active = True
		is_logged_in = False

        print(type(is_active))  # <class 'bool'>
        
        숫자와의 관계
        print(bool(1))  # True
		print(bool(0))  # False
        
     🔹 NoneType (None)
     	
        값이 없음을 나타냄 (null과 유사)
        
        result = None
		print(type(result))  # <class 'NoneType'>
        
     

10_자료형 변환(문자)

자료형을 변환하는 방법.
------------------------------------------------------------
1️⃣ 자료형 변환 (Type Casting)
	x = 10  # int
	y = "20"  # str

	print(int(y))  # 20 (문자열 → 정수)
	print(str(x))  # "10" (정수 → 문자열)
	print(float(x))  # 10.0 (정수 → 실수)
    
	🔹 타입 확인 및 변환
    
    •	자료형 확인
    
        print(type(100))  # <class 'int'>
		print(type("hello"))  # <class 'str'>
		print(type([1, 2, 3]))  # <class 'list'>
        
    •	자료형 변환
    	
        print(str(10))  # "10"
		print(list("abc"))  # ['a', 'b', 'c']
		print(set([1, 2, 2, 3]))  # {1, 2, 3}
          
	🔹 파이썬의 동적 타이핑 (Dynamic Typing)
    	파이썬은 변수의 자료형을 명시적으로 선언할 필요가 없음 (동적 타이핑).
		변수에 할당된 값에 따라 자동으로 자료형이 결정됨.
        
        	x = 10  # int
			x = "hello"  # str (자료형 변경 가능)
			x = [1, 2, 3]  # list
            
        하지만 타입을 일관되게 유지하는 것이 코드 유지보수에 좋음.
		필요하면 type hints 사용 가능 (파이썬 3.5+)
        	
            def add(a: int, b: int) -> int:
    			return a + b

11_자료형 변환(숫자)

12_자료형 변환(그외 데이터)


	빈문자 vs 공백문자 
   --------------------------------------------------------
   1️⃣ 빈 문자열("")bool 값
   
    	•	아무 문자도 포함하지 않은 문자열 ("")bool("")의 결과는 False
       
   2️⃣ 공백 문자열(" ")bool 값
   
   		•	공백 문자(Space, " "),("\t"), 개행문자("\n") 등은 문자로 인식
		•	bool(" ")의 결과는 True

13_데이터 입력

 
 	파이썬에서 사용자의 입력을 받을 때는 input() 함수를 사용하며,
    입력받은 데이터의 자료형을 변환하려면 형 변환 함수
    (int(), float(), str())를 사용한다.
    --------------------------------------------------------
    1️⃣ 데이터 입력받기 (input() 함수)
    
    	input() 함수는 사용자가 입력한 값을 문자열(str) 형태로 반환한다.
        
        data = input("입력하세요: ")
		print("입력된 값:", data)
		print("데이터 타입:", type(data)) # <class 'str'>
        
    2️⃣ 입력받은 데이터 형 변환 (Type Casting)
    	🔹 int() : 문자열 → 정수형 변환
        --------------------------------------------
        입력받은 값을 정수(int)로 변환하려면 int()를 사용한다.
        
        num = int(input("정수를 입력하세요: "))
		print("입력된 값:", num)
		print("데이터 타입:", type(num))
        ⚠ 주의:
		문자열이 정수로 변환될 수 없는 값이면 오류(ValueError)가 발생한다.
        
        🔹 float() : 문자열 → 실수형 변환
        ----------------------------------------------
        입력값을 실수(float)로 변환할 때는 float()를 사용한다.
        
        num = float(input("실수를 입력하세요: "))
		print("입력된 값:", num)
		print("데이터 타입:", type(num)) # <class 'float'>
        
        🔹 str() : 숫자 → 문자열 변환
        -----------------------------------------------
        숫자를 문자열로 변환할 때는 str()을 사용한다.
        
        num = 123
		text = str(num)
		print("변환된 값:", text)
		print("데이터 타입:", type(text))
        ------------------------------------------------
        
     3️⃣ 여러 개의 값 입력받기 (split())
     	사용자가 여러 개의 값을 입력할 때는 split()을 활용할 수 있다.
        
        🔹 공백 기준으로 여러 값 입력받기
        
          data = input("공백으로 구분하여 입력하세요: ").split()
          # 공백으로 구분하여 입력하세요: 10 20 30
          print("입력된 값:", data)
          # 입력된 값: ['10', '20', '30']
          print("데이터 타입:", type(data))
          # 데이터 타입: <class 'list'>
        
        📌 split()을 사용하면 리스트(list)로 변환되며, 리스트 요소는 문자열(str)이다.
        
        🔹 입력값을 정수 리스트로 변환 (map() 활용)
        
          numbers = list(map(int, input("공백으로 구분하여 정수를 입력하세요: ").split()))
          # 공백으로 구분하여 정수를 입력하세요: 5 10 15
          print("입력된 값:", numbers)
          # 입력된 값: [5, 10, 15]
          print("데이터 타입:", type(numbers))
          # 데이터 타입: <class 'list'>
        📌 map(int, input().split())을 사용하면 입력값을 int로 변환하여 리스트로 저장할 수 있다.
        
        🔹 쉼표(,)로 구분된 입력값 받기
        
          쉼표(,)로 입력된 값을 리스트로 변환할 때 split(",")을 사용한다.

          data = input("쉼표로 구분하여 입력하세요: ").split(",")
          # 쉼표로 구분하여 입력하세요: apple,banana,grape
          print("입력된 값:", data)
          # 입력된 값: ['apple', 'banana', 'grape']     
        

14_데이터 출력

    1️⃣  콤마(,)를 이용한 데이터 연속 출력
    
    	파이썬에서 print() 함수는 여러 개의 값을 쉼표(,)로 구분하여 연속 출력할 수 있다. 
        기본적으로 쉼표(,)를 사용하면 값 사이에 공백( )이 자동으로 추가된다.
        
        print("이름:", "홍길동", "나이:", 25, "직업:", "개발자")
		# 출력: 이름: 홍길동 나이: 25 직업: 개발자
        
        공백을 없애거나 다른 구분자를 넣고 싶다면 sep 옵션을 사용할 수 있다.
        
        print("이름:", "홍길동", "나이:", 25, "직업:", "개발자", sep=", ")
		# 출력: 이름:, 홍길동, 나이:, 25, 직업:, 개발자
        
    2️⃣  포맷 문자열을 이용한 데이터 출력
    	🔹 f-string (Python 3.6 이상)
         
        name = "홍길동"
        age = 25
        job = "개발자"
        print(f"이름: {name}, 나이: {age}, 직업: {job}")
        # 출력: 이름: 홍길동, 나이: 25, 직업: 개발자
        
        🔹 format() 함수
         
        print("이름: {}, 나이: {}, 직업: {}".format(name, age, job))
		# 출력: 이름: 홍길동, 나이: 25, 직업: 개발자
        
        🔹 % 포맷팅 (구식 방법)
         
        print("이름: %s, 나이: %d, 직업: %s" % (name, age, job))
		# 출력: 이름: 홍길동, 나이: 25, 직업: 개발자
      
         
        
     3️⃣ 특수문자:(\t)과 개행(\n)
     
     	- 개행 문자 (\n)
        줄 바꿈을 할 때 사용한다.
        
        print("첫 번째 줄\n두 번째 줄\n세 번째 줄")
        # 첫 번째 줄
        # 두 번째 줄
        # 세 번째 줄
        
        - 탭 문자 (\t)
        탭 간격을 추가하여 정렬할 때 사용한다.
        
        print("이름\t나이\t직업") 
        # 이름	나이	직업
		print("홍길동\t25\t개발자")
        # 홍길동	25	개발자
		print("김철수\t30\t디자이너")
        # 김철수	30	디자이너
        
        - 문자열 내에서 \n, \t 등의 특수문자를 문자 그대로 
        출력하려면 백슬래시(\)를 한 번 더 사용한다.
        
        print("개행문자: \\n, 탭문자: \\t")
		# 출력: 개행문자: \n, 탭문자: \t
     

15_format()와 형식문자

    1️⃣  format() 함수
    	format() 함수는 {}(중괄호)를 사용하여 문자열 내에서 변수를 삽입할 수 있다.
        
       	name = "홍길동"
    	age = 25
    	job = "개발자"

		print("이름: {}, 나이: {}, 직업: {}".format(name, age, job))
		# 출력: 이름: 홍길동, 나이: 25, 직업: 개발자
        
        위치 인덱스를 사용하면 같은 변수를 여러 번 활용할 수 있다.
        print("이름: {0}, 나이: {1}, 직업: {0}".format(name, age))
		# 출력: 이름: 홍길동, 나이: 25, 직업: 홍길동
        
        키워드 인자를 사용할 수도 있다.
        print("이름: {name}, 나이: {age}, 직업: {job}".format(name="이영희", age=22, job="디자이너"))
		# 출력: 이름: 이영희, 나이: 22, 직업: 디자이너
        
    2️⃣  형식문자 (% 포맷팅)
    
    	printf 스타일 포맷팅으로, % 기호를 사용하여 데이터를 삽입할 수 있다.
        
    	형식문자	설명
          %d	정수 (decimal)
          %f	실수 (float)
          %s	문자열 (string)
          %x	16진수 (hex)
          %o	8진수 (octal)
          
    3️⃣ 소수점 자릿수 정하기
    	소수점 이하 자리수를 조절하려면 format() 또는 f-string을 사용할 수 있다.
        
        1) format() 함수 활용
        
          pi = 3.1415926535
          print("원주율: {:.2f}".format(pi))  # 소수점 2자리까지 출력
          # 출력: 원주율: 3.14
        
        2) f-string 활용 (Python 3.6 이상)
        
        	print(f"원주율: {pi:.3f}")  # 소수점 3자리까지 출력
			# 출력: 원주율: 3.142
        
        3) % 포맷팅 활용
        
        	print("원주율: %.4f" % pi)  # 소수점 4자리까지 출력
			# 출력: 원주율: 3.1416
            
        4) 정수와 실수를 정렬하여 출력
        	
            print("정수: {:5d}, 실수: {:8.2f}".format(42, 3.14159))
			# 출력: 정수:    42, 실수:     3.14
       	{:5d}: 정수를 최소 5자리 너비로 출력 (앞에 공백 추가)
		{:8.2f}: 실수를 최소 8자리 너비로 출력, 소수점 이하 2자리까지 표시
        
     

16_산술 연산자(덧셈, 뺄셈)

    1️⃣  format() 함수
    	format() 함수는 {}(중괄호)를 사용하여 문자열 내에서 변수를 삽입할 수 있다.
        
       	name = "홍길동"
    	age = 25
    	job = "개발자"

		print("이름: {}, 나이: {}, 직업: {}".format(name, age, job))
		# 출력: 이름: 홍길동, 나이: 25, 직업: 개발자
        
        위치 인덱스를 사용하면 같은 변수를 여러 번 활용할 수 있다.
        print("이름: {0}, 나이: {1}, 직업: {0}".format(name, age))
		# 출력: 이름: 홍길동, 나이: 25, 직업: 홍길동
        
        키워드 인자를 사용할 수도 있다.
        print("이름: {name}, 나이: {age}, 직업: {job}".format(name="이영희", age=22, job="디자이너"))
		# 출력: 이름: 이영희, 나이: 22, 직업: 디자이너
        
    2️⃣  형식문자 (% 포맷팅)
    
    	printf 스타일 포맷팅으로, % 기호를 사용하여 데이터를 삽입할 수 있다.
        
    	형식문자	설명
          %d	정수 (decimal)
          %f	실수 (float)
          %s	문자열 (string)
          %x	16진수 (hex)
          %o	8진수 (octal)
          
    3️⃣ 소수점 자릿수 정하기
    	소수점 이하 자리수를 조절하려면 format() 또는 f-string을 사용할 수 있다.
        
        1) format() 함수 활용
        
          pi = 3.1415926535
          print("원주율: {:.2f}".format(pi))  # 소수점 2자리까지 출력
          # 출력: 원주율: 3.14
        
        2) f-string 활용 (Python 3.6 이상)
        
        	print(f"원주율: {pi:.3f}")  # 소수점 3자리까지 출력
			# 출력: 원주율: 3.142
        
        3) % 포맷팅 활용
        
        	print("원주율: %.4f" % pi)  # 소수점 4자리까지 출력
			# 출력: 원주율: 3.1416
            
        4) 정수와 실수를 정렬하여 출력
        	
            print("정수: {:5d}, 실수: {:8.2f}".format(42, 3.14159))
			# 출력: 정수:    42, 실수:     3.14
       	{:5d}: 정수를 최소 5자리 너비로 출력 (앞에 공백 추가)
		{:8.2f}: 실수를 최소 8자리 너비로 출력, 소수점 이하 2자리까지 표시
        
     

17_산술 연산자(곱셈과 나눗셈)

18_산술 연산자(나머지와 몫)

19_산술 연산자(거듭제곱)

20_복합연산자

profile
잘 갔다 오란다고 잘 갔다 올 수 있는 곳이 아니야

0개의 댓글