본문 바로가기

기록

파이썬 교과서 내용 정리 10 ~ 52pg

파이썬의 특징 : 오픈소스, 누구나 사용 가능 

 

파이썬의 종류

 

Cpython : C언어로 작성한 파이썬

Jpython : 자바로 구현한 파이썬 자바의 클래스를 그대로 가져와 사용할 수 있다

IronPython : C#으로 개발한 파이썬

PyPy : 파이썬으로 구현한 파이썬. Cpython보다 빠르다.

 

파이썬의 장점:

 

1.  오픈소스이다.

2. 문법이 쉽고 간결하다.

3. 가독성이 뛰어나다.

4. 동적 타이핑이 가능하다. --> 실행 중에 자료형, 메모리가 결정됨.

5. 유니코드 사용.

6. 풍부한 라이브러리.

7. 빠른 개발 속도.--> 간결한 문법과 풍부한 라이브러리

8. C언어와의 쉬운 연계.

9. 대부분의 운영체제에서 실행가능

10. 다양한 분야에 활용.

 

 

파이썬의 단점:

 

1. 연산속도가 느리다. --> 게임개발에는 부적합

2. 모바일 기기에서 활용이 어렵다.

 

 

파이썬의 활용분야:

 

1. 시스템 유틸리티 제작.(파이썬은 운영체제의 시스템 명령어들을 이용 가능)

2. 웹과 인터넷 서비스 개발

3. 네트워크 프로그래밍 --> 비동기식 네트워크 프로그래밍 가능

4. 데이터베이스에 접근할 수 있기 때문에 DB프로그래밍 가능.

5. Pandas 모듈을 통해 데이터 분석에 용이.

6. GUI 프로그래밍도 가능 ex) Tkinter

7. NumPy를 통해 수학, 과학 분야에도 활용 가능.

8. 라즈베리 파이를 통한 사물인터넷 개발 가능.

 

파이썬의 변수명 규칙:

 

- 예약어 사용 불가 ex) print, if, for 등

- 첫 번째 문자에는 숫자가 올 수 없다.

- 대소문자를 구별한다.

 

type( 변수명 ) 은 해당 변수의 자료형을 반환한다.

출력형식 : <class  '자료형' >

정수, 실수 , 복소수  : int, float, complex

 

2진수, 8진수, 16진수를 표현하는 방법 :

 

2진수 : 앞의 두 문자로 '0b'를 입력한다.

8진수 : 앞의 두 문자로 '0o'를 입력한다.

16진수 : 앞의 두 문자로 '0x'를 입력한다.

 

2진수, 8진수, 16진수의 자료형도 모두 'int'이다.

 

지수표현 : 

e 표기법 : 지수표현 e 뒤의 숫자는 '10^숫자'를 의미.

부동 소수점 표현 방법을 사용하기 때문에 정밀도에 한계가 있다.

**파이썬에서 e표기법을 사용한 숫자들의 자료형은 'float'이다. **

e 표기법의 자료형

 

 

복소수 :

 

복소수 코드

 

위와 같이 파이썬에서 복소수의 허수부는 j나 J를 통해 표현된다. 

또한 소괄호로 묶여 (실수부 + 허수부 'j' ) 의 형태로 표현된다. 

소괄호로 묶여 튜플로 보일 수 있지만, 이는 튜플이 아닌 단일 객체이다.

때문에 코드에서 c.imag와 c.real과 같이 객체의 속성을 나타내는 값들은 괄호 없이 접근하는 것을 볼 수 있다.

하지만 켤레복소수를 찾아주는 매소드인 conjugate()와 같은 경우에는 괄호를 통해 접근하는 것을 확인할 수 있다.

 

주의해야 할점! 

실수부가 0일 때는 실수부를 생략하고 허수부만 출력하며, 이때는 괄호가 생략된다.

하지만 허수부가 0일 때는 허수부를 생략하지 않고 (실수부 + 0j)의 형태로 표현된다.

실수부가 0일때 생략되는 모습

 

여러가지 형변환의 경우:

 

int(12.7) : 실수를 정수로 변환

int('321') : 문자열을 정수로 변환

float(456) : 정수를 실수로 변환

float('65.4') : 문자열을 실수로 변환

float('123e4') : 지수표현을 실수로 변환

complex(0) : 실수를 복소수로 변환 --> 0j

complex('1.23 + 4.56j ') : 문자열을 복소수로 변환

 

**주의**

불가능한 형변환: 

int('65.4') : '65.4'는 실수에 대한 정보를 담고 있는 문자열이기에, 문자열을 정수로 변환하거나, 실수를 정수로 변환하는 함수인 int()는 제대로 작동하지 않는다.

 

문자열 다루기:

 

- 다형성 : '+' 연산자는 숫자에 대해서는 덧셈 연산, 문자열에 대해서는 문자열을 이어 붙인다는 의미를 갖는다.

- 파이썬에서는 문자열에 * 연산을 함으로써 반복문 없이 여러번 출력할 수 있다.

- 파이썬에서 역슬래시 '\'는 c언어와 같은 기능을 수행한다.

 

인덱싱과 슬라이싱:

 

인덱싱 :

문자열 또는 리스트의 인덱스는 맨 앞자리를 가리키는 0부터 시작한다.

c언어와는 달리 음수 인덱싱이 가능하다. (-1은 맨 끝자리를 의미)

고로, 맨 앞자리의 인덱스는 0인 동시에 배열의 길이 * -1 로 표현될 수 있다.

 

슬라이싱:

문자열 [인덱스1 : 인덱스2] 는 

인덱스 1 부터 인덱스2 바로 앞까지의 문자열을 반환한다.

겹치는 구간이 없는 경우에는 빈 문자열을 반환한다.

인덱스 1 또는 인덱스 2를 생략할 수 있다.

[인덱스1 : ]  --> 인덱스 1부터 끝까지

[ : 인덱스2] --> 처음부터 인덱스 2까지

[:] --> 전체를 출력 

 

슬라이싱은 range 함수와 같이 시작, 끝값 뿐만이 아닌 상승폭(step) 또한 설정할 수 있다.

list[ start : stop : step ]의 형태이다.

이때 start과 stop을 생략하여 전체를 가리킨 후, 상승폭을 -1로 하여

list[::-1]의 형태로 만든다면 이는 해당 리스트를 역순으로 뒤집은 것과 같아진다.

 

 

음수 인덱스 : 파이썬의 리스트는 음수 인덱스를 지원한다.

list[-1]은 리스트의 가장 마지막 값을 가리킨다.

즉, list의 음수인덱스는 음수인덱스 + len(list)로 보정해서 생각하면 편하다.

ex) list[-1], len(list) = 18

      list[-1] = list[18 + -1] = list[17]

      list[-3] = list[18 + -3] = list[15]

 

문자열의 내장 함수들 :

- .len() : 문자열의 길이 반환

- .count('인자') : 문자열에서 인자의 개수 반환 

- .upper() : 모두 대문자로 변환한 문자열을 반환

- .lower() : 모두 소문자로 변환한 문자열을 반환

- .strip() : 양쪽 공백 제거한 문자열을 반환

- .replace(문자열1, 문자열 2) : 해당 문자열에서 문자열1을 문자열2로 바꾼 문자열을 반환

- .find() : 해당 문자열의 왼쪽에서 부터 인자(문자열)이 처음으로 나타난 곳의 인덱스를 반환 

find() 예시

 

- .rfind() : 문자열의 오른쪽에서 부터 인자값이 처음으로 나타난 인덱스 반환

rfind()와 find()를 구분하는 이유는 해당 인자값이 '처음'으로 등장하는 인덱스를 반환하기 때문이다.

만약 찾지 못한다면 -1을 반환한다.

 

- '문자 또는 문자열' in '문자열' : 앞의 문자 또는 문자열이 뒤의 문자열에 포함되었는지 여부를

boolean 값으로 반환하는 예약어이다.

 

- .split("문자열") : 해당 문자열을 입력된 인자값을 기준으로 나눈 리스트반환하는 함수이다.

':' 을 기준으로 나뉜 모습. 여기서 a는 문자열, b는 리스트이다.

- .join("문자열") : 해당 리스트를 문자열을 입력된 인자값을 기준으로 이어서 만든 문자열을 반환하는 함수이다.

**.split() --> 문자열 to 리스트, .join() ---> 리스트 to 문자열 **

 

 - format : 문자열 형식을 미리 정하고, 인자를 주어 문자열을 완성한다.

중괄호 내를 비워놓으면 format()에 입력된 순서대로 문자열에 들어간다.

 

하지만 중괄호 내에 변수명을 입력하여 키워드 인자의 형태로 넘겨줄 경우에는 변수가 입력된 자리에 들어간다.

 

** 변수명 대신 "{0} + {1}".format(9, 10) 처럼 인덱싱의 형태로 사용할 수도 있다. 하지만 이 경우에는 모든 괄호에 인덱스를 지정해줘야 한다.**

 

- format 함수를 이용하여 정수를 출력하는 방법 : "{:d"}.format(정수) 가 기본형태이며, 여러가지 옵션들은 c언어의 printf와 매우 유사하다.

{:5d} : 5칸 확보 후 출력

{:+5d} : 양수인 경우 +를 붙인다. 아닐 경우에는 붙이지 않는다.

{:05d} : 확보한 빈자리에 0을 출력

{:+05d} : 5칸 확보후, 0으로 채우고, 양수인 경우 + 붙이기 

 

- 실수를 표현하는 방법 : 기본형태 -> "{:f}".format(실수)

{:12.f} : 12칸 확보하고 실수 출력 

{:12.1f} : 12칸 확보 후 소수점 첫째 자리까지 반올림한 값을 출력

***기본적으로 '{:f}'는 소수점 아래 6자리까지 출력하며, 소수점 아래 숫자의 개수를 직접 지정해줄 수도 있다.***

 

**실수 또한 f 앞에 숫자를 표기해 확보해야 하는 칸을 명시할 수 있다. 이때 소수점 또한 하나의 칸으로 취급하므로 주의해야 한다.***

 

이를 이용해 다음과 같은 코드 또한 작성할 수 있다.

7칸을 확보한 후, 1.2를 소수점 아래 2자리까지 출력, 맨 앞자리에는 부호 표기, 남은자리에 0채워넣기.

 

 

이렇게까지 복잡한 문제가 나올지는 잘 모르겠다...

 

리스트

 

리스트 생성:

list(문자열)

list(튜플)

list(딕셔너리) --> 딕셔너리의 키 값이 리스트로 변환된다.

list(셋) 

list(range(숫자))

 

리스트의 기능들:

 

1. + 연산을 통해 리스트와 리스트를 더할 수 있다. (다형성)

2. .append() --> 인자값으로 넘겨진 값을 리스트의 요소로 추가한다. 이때, 리스트가 인자값으로 넘겨져도 요소로 추가된다(주의!)

3. .insert(인덱스, 값) : 넘겨진 인덱스에 해당 값을 추가한다. 이때 원래 있던 요소들의 인덱스는 한칸 씩 뒤로 밀린다.

4. .extend(리스트) : 넘겨진 리스트를 해제하여 하나씩 요소로 추가한다. 이때, 입력된 값이 리스트가 아니면 오류가 난다.

extend()

5. 리스트의 요소는 수정가능하다.

** 수정 불가능 자료형 --> 문자열, 튜플 **

 

6. 리스트 요소 제거

요소 제거 코드 모음

 

- del 리스트[인덱스] : 리스트에서 해당 인덱스 요소를 제거한다.

- pop() 또는 pop(인덱스) : 인덱스가 입력되지 않는 경우는 맨 끝의 요소를 제거 후 반환. 인덱스가 입력된 경우에는 해당 인덱스의 요소를 제거 후 반환

- remove(값) : 해당 리스트에서 입력된 값이 처음 나타난 요소를 하나만 제거한다.

- clear() : 모든 요소 제거

** del, pop == 인덱스 기준 제거 // remove() == 값 기준 제거 **

 

- len(리스트) : 리스트의 요소의 개수 반환 (내장함수)

- .sort() : 해당 리스트를 오름차순 정렬

- .reverse() : 해당 리스트를 뒤집는다. 

*내장 함수를 이용하여 reversed(list)로 뒤집을 수도 있다. 하지만 이 경우에는 원본 리스트를 바꾸지 않고 새로운 리스트를 반환한다.

** 이때, sort()와 reverse()는 결과를 리스트에 반영하기 때문에 반환값이 없다. **

 

- range 함수 : 주어진 조건에 따라 수를 나열한 range 객체를 반환

- range(stop) : 0부터 stop 전까지

- range(start, stop) : start부터 stop 전까지

- range(start, stop, step) : start부터 stop 전까지 step 의 폭만큼 증가

** range 함수의 반환값을 특정 자료형으로 캐스팅하여 자유롭게 사용할 수 있다. **

 

range함수 사용 예시

 

- enumerate(리스트) : 0부터 시작하는 인덱스 값과 항목을 튜플 형태로 리턴하는 내장 함수. 보통 인덱스와 값을 함께 출력하는 형식의 for문에서 사용한다.

 

튜플

 

튜플은 리스트와 유사하지만, 값이 수정이 불가능하다는 점을 포함하여 패킹, 언패킹 문법 등, 몇가지 차이점이 존재한다.

튜플은 '여러 값들의 묶음'이라는 느낌이 강하다.

 

1. color = 129, 247, 216 와 같은 방식으로 하나의 변수에 여러 수를 묶어서 대입하여 튜플을 생성할 수 있다. (패킹)

2. red, grean, blue = color 와 같이 튜플에 있는 요소들을 하나 씩 변수에 대입하는 것 또한 가능하다. (언패킹)

3. x, y = y, x와 같은 직관적인 swap이 가능하다.

4. 리스트와 동일하게 인덱싱과 슬라이싱이 가능하다.

5. 요소를 수정하는 것이 불가능하다.

6. .index(요소) : 값에 해당하는 인덱스를 반환한다.

7. .count() : 값에 해당하는 요소의 개수를 반환한다.

 

 

~~ 52pg.

'기록' 카테고리의 다른 글

파이썬 교과서 내용 정리 124 ~ 187pg  (0) 2025.09.22
파이썬 교과서 내용 정리 53 ~ 123pg  (0) 2025.09.21
중간점검 2  (4) 2025.08.17
PS 임시 중단  (0) 2025.06.04
중간 점검 + 계획  (0) 2025.06.01