WEBS 동아리 스터디로 다음과 같이 처음 시작하는 파이썬으로 제대로된 파이썬 공부를 시작 하였다.
http://www.yes24.com/Product/Goods/29289816

 

처음 시작하는 파이썬 - YES24

파이썬으로 프로그래밍에 입문하자!데이터 분석, 금융, 자연 과학 등 다양한 분야에서 각광받는 언어 파이썬. 개발자가 아니더라도 개발자가 되고 싶다면, 개발자지만 파이썬을 처음 시작한다

www.yes24.com

책 구매는 yes24 등등에서 할 수 있다.

 

[chapter 1] 파이(py) 맛보기

 


1장의 내용은 python에 대해서 맛보는 chapter 이였다.

파이썬 맛보기

프로그래밍이랑 올바른 단어와 규칙을 학습 하는것, 다음과 같은 예문을 통해서 알 수 있었다.

간단한 웹 api 사용법

다음과 같이 wayback machine을 이용한 옛날 웹 사이트를 탐방 하였다.
웹 api, json, requests를 사용한 것으로 다음에 배울 것이다.

그러면 python은 도대체 어디에 쓰이나?

Webs을 포함한 GUI
서버/클라이언트 웹

대용량 데이터 처리를 지원하는 Backend server

클라우드

모바일 디바이스

임베디드 디바이스

인공지능

.. 등등 다양한 곳에서 활용된다.
2021/8월 기준 2위인 언어이다.

출처 https://www.tiobe.com/tiobe-index/

Python은 매우 간결하고 간단하다.

C/C++은 매우 어렵다, low level 언어로 Python을 포함한 대부분의 운영체제는 C/C++ 이다.
하지만 메모리 관리가 너무 어렵다. -> Python은 동적언어로 변수 타입을 사용하기전에는 필요 x



python의 대화식 인터프리터는 다음과 같이 사용이 가능하다.
우선 python을 설치 하자.
그리고 cmd, 혹은 window powershell애 python을 입력하면 다음과 같은 창이 나올 것 이다!
import this 를 입력하면 python 의 철학을 볼 수 있다. IDEPycharm 또는 VSCODE를 추천

파이썬의 기본 철학

 

 

[chapter 2] 데이터: 타입, 값, 변수, 이름

python data는 object이다.
객체란 메모리에 할당 된 것으로 프로그램에 사용되는 데이터 또는  식별자에 의해서 참조되는 공간이다.
python은 메모리에 객체로 래핑 한다.

최소한 이러한 것들이 필요하다!

기본 data type은 다음과 같다.

data type 표

가변성이란? 

불변 객체는 객체 생성 이후 값을 변경 할 수 없는 object

가변 객체는 객체 생성 이후 값을 변경 가능한 object

하지만 객체의 타입을 모두 못 바꾼다. 파이썬은 강타입 언어
한가지 예를 보면 다음과 같다.

불변객체의 경우, 값이 바뀌면, 메모리 주소가 바뀐다.
가변객체의 경우, 값이 변경 되어도 메모리 주소는 일정하다.

다음과 같은 성질을 기본적으로 이해 해야한다.

python data 값을 명시하는 두가지 방법이 존재한다.

- 리터럴

- 변수

다양한 데이터 타입에 따라 리터럴 지정 방법에 대해 나온다.



변수는 컴퓨터 언어의 핵심 개념이며, 파이썬 변수의 이름 규칙은 다음과 같다.

-소문자 (a~z)

-대문자 (A~Z)

-숫자(0~9)

-언더바(_)

-대소 문자 구분

-숫자가 아닌 문자나 언더바로 시작

-언더바로 시작하면 특별한 취급(9)

-파이썬 키워드는 사용블가

키워드가 햇갈리면 다음과 같이 입력하면 keyword list를 볼 수 있다.

keyword list

python은 = 를 통해 할당하며, == 는 비교이다,

x 에 5 할당 , y 에 x + 7 할당

변수는 단지 이름이다. 이것은 컴퓨터 언어 마다 다르다.

특히 리스트 같은 가변 객체를 사용할 때는 필수다.

할당은 값을 복사가 아니라 , 단지 데이터를 포함하는 메모리 공간의 객체에 이름을 붙이는 것 이다.

a,b,c 의 메모리 주소는 모두 같다

객체의 타입 확인법은 다음과 같다.

객체 타입 확인법

y = 5

x  = 12 - y

x

이 과정은 다음과 같다.

5인 정수 객체 생성

변수 y가 객체 5가르키도록 한다

값이 12인 정수 객체 생성

객체 값 12와 변수 y가르키는5를 뺀다

7인 객체 생성

x7인 객체를 가리킨다

x가르키는 새로운 객체의 참조횟수를 증가

x가르키는 값 출력..
너무 이론적인 내용이라 좀 지겨울수도 있다.

다음과 같이 한번에 다양한 이름 할당이 가능하다. 메모리 주소는 같다,

여러 이름 할당

이름을 재할당 하면 다음과 같이 변한다.

참조 횟수만 감소. 증가한다.

A = 1,   1 객체 참조 횟수 1

A = 2    1 객체 참조 횟수 0, 21

값을 복사할때는 불변 객체와 가변 객체가 다음과 같이 다르다.

불변, 가변 객체의 복사, 메모리 주소를 주목하자.

 

[chapter 3] 불리언

True or False Python 특수 함수 bool()은 모든 파이썬 data type불리언으로 변환

0이 아닌 것은 모두 true이다.

0 빼고 전부 다 true이다


분수나 소수점 x 정수 앞에 부호가 가능하다. 10진수 외 다른 진수로 숫자 표현 가능
연산 순서는 C/C++ 과 동일하다.

간단하게 정수 사용 법 및 계산 사용법이다.

이외에도 다양한 것들이 있다.

2진수, 8진수,16진수, 다양한 타입 변환 법, 부동 소수점
2진수, 8진수, 16진수, 아스키코드 처리 방법

 

[chapter 4] if

주석은 # 으로 한다.

#은 해시, 샤프, 파운드, 옥토소프 같이 다양한 이름이 존재하며, 문자열 안에 주석이 있으면 문자로 인식한다.

라인 유지하기는 \로 한다(슬래쉬) 코드가 길어 지는 것을 방지한다.

긴 문장을 다음과 같이 #으로 주석, \로 줄바꿈 하였다.
개선된 문장

비교하기, if , elif , else 를 사용한다.

기존 C/C++ 과 비슷하면서도 조금 다르다.

조건 테스트시 괄호가 필요 없다.

and or not 이 사용된다.

 

간단한 예이다. if else, if elif elif else 등 다양한 조건을 만들 수 있다.

 

다음과 같이 C/C++ 과는 다르게 쓰이는 것을 알 수 있다. 주석은 error

 

다음은 모두 False이다.

null, 정수 0, 부동소수점 0.0, 빈문자열, 빈 리스트[], 튜플 (), 딕셔너리 {}, 빈 셋 set()

멤버십 연산자 in은 다음과 같이 사용이 가능하다. Set list tuple string dict

다음과 같이 다양한 타입에 사용이 가능하다.

[chapter 5] 특수문자열

C/C++과는 다르게  “~~”, “”~~”” 작은 따음표 ,따음표 두개로 문자열 생성이 가능하다.

“””~~”””, “”””””~~“””””” 도 가능하다.

“~~~~””~~“”~~~~” 도 가능하다.

“”~~~~~”~~~”~~~~””도 가능하다.

세개의 작은 따음표는 보통 여러줄의 문자열에 많이 쓰인다.

다음과 같이 문자열이 생성 가능하다.

print따음표를 제거 한 뒤에 출력한다.( 인터프리터는 나두며 \n같은 이스케이프 문자도 그대로 출력한다)

공백을 포함해서 더하는 것을 알 수 있다.

문자열 타입으로 변환하는 str

전부 다 str 타입으로 변했다.

\ 역슬래쉬  \n 줄바꿈 백슬래쉬를 입력 하고 싶으면 \\(역슬래쉬 두번)을 쓰면 된다.

결합의 +는 자동으로 띄어쓰기를 하지 않는다.

더하기는 공백이 없다.

복제의 * + 보다 우선순위가 높다.

*사용

오프셋에 따라 다음과 같이 문자 추출 가능하다.

오프셋에 따라 추출, -1은 맨 뒤이다.

Index 밖으로 할 시에 error 발생한다.

index error 발생한다.

문자열은 불변 이므로 replace로 바꿔야한다.
replace
시 할당 하지 않으면 letter은 바뀌지 않는다.

왼쪽은 바뀌지 않지만, 오른쪽은 바뀐다.

슬라이스로 부분 문자열 추출

[ : ] 처음부터 끝까지 전체를 추출한다

[start : ] start  오프셋 부터 끝까지 추출한다.
[ : end]
처음부터 end-1 오프셋 까지 추출한다.
[start : end] start
부터 end-1 오프셋 까지 추출한다.
[start : end : step] start
부터 end-1 까지 step 만큼 뛰면서 추출한다.

슬라이스 추출 예제이다, end-1까지 인것을 주의하자.

다음과 같이 역순으로 출력이 가능하다.

둘다 역순 출력이다.

이것은 error가 발생하지 않는다, 이유는 slice는 단지 scan이다.

error가 발생하지 않는다.

문자열을 조작 하기 위해서 + 와 같은 것을 사용 했지만, 매우 제한적이다.

len()은 길이를 얻는 함수이다. len 은 다른 시퀀스 type에도 사용가능하다.

len함수

Split 메서드는 문자열에만 사용이 가능하다.
인수로 “,” 를 전달 한 경우, 두번째는 아무것도 안 준경우 listreturn 된다.

split에 ,를 주면 1번, 안주면 아래이다.

joinsplit과 반대이다.
split()
메서드는  string.join(list) 형식이다.

join 사용법

문자열의 일부를 대체 하기 위해서는 replace()메서드를 사용한다.
일치하는 모든 것을 교체한다. 숫자를 줘서 교체하는 개수를 조정 할 수 있다.

replace 사용법 예제

strip은 문자열 맨 앞(left), 문자열 맨 뒤쪽(right)padding 문자 (여백또는 공백)를 제거 하는 것이다
strip()
에 인수가 없으면 “ “, “\t”, “\n” 양쪽 끝을 제거한다.

lstrip()은 왼쪽, rstrip()은 오른쪽이다.
다음과 같이 여러 문자를 인수로 줄 수도 있다.

strip 사용법

Python에는 많은 문자열 메서드가 있다.

Startswith은 시작 부분을 체크한다, endswith은 마지막 부분을 체크한다.

song 슬라이스 추출, 길이 출력

Startswith은 시작 부분을 체크한다, endswith은 마지막 부분을 체크한다

stratswith와 endswith로 앞 뒤를 체크한다.

Findindex는 해당 문자열의 시작 오프셋을 리턴한다. 다른 점은  없으면 find-1, indexerror를 발생시킨다. 맨 처음 나온 단어의 오프셋을 리턴한다

find와 index로 찾기

rfindrindex 메서드는 뒤에서 부터 탐색을 시작한다.

뒤에서 부터 탐색을 하는 것을 알 수 있다.

Count는 몇 개가 들어 있는지 세는 것, isalnum은 모두 숫자와 알파벳인지 체크 하는 것이다.
이외에도 다양한 메서드들이 있지만, 외우는 것이 아닌 필요할 때 찾아 쓰는 것이다.

count로 숫자를 세고, isalnum으로 체크한다.

조금 더 알아보면 다음과 같은 것이 있다.

다양한 메서드들이 존재한다. 모두 외우지 말고 공식문서를 애용하자.

https://www.w3schools.com/python/python_ref_string.asp

 

Python String Methods

Python String Methods Python has a set of built-in methods that you can use on strings. Note: All string methods returns new values. They do not change the original string. Method Description capitalize()Converts the first character to upper case casefold(

www.w3schools.com

문자열을 지정 한 공간에서 정렬 시킨다. 이때 정렬은 공간을 정렬하는 것 이다.

30이란 공간  안에서 정렬을 시킨다.

앞에서 문자열을 + 를 이용하여 연결 하였지만, 너무 제한적이다.
디양한 포매팅을 이용하여 보고서나 특정 양식 등의 출력을 생성 할 수 있다.

문자열 포맷팅은3개가 있다.

Python 2.3 : 옛스타일

Python 2.6 이상 : 새 스타일

Python 3.6 이상 : f-문자열

 

옛 스타일은 format_string % data 형식이다.
%s
: 문자열 , 모든 데이터 타입에 사용 할 수 있으며, 공백 없이 문자열로 지정한다.

%d : 10진수

%x : 16진수

%o : 8진수

%f : 10진수 부동 소수점

%e : 지수로 나타낸 부동 소수점

%g : 10진 부동 소수점 혹은 지수로 나타낸 부동소수잠

%% : 리터럴
너무 복잡하고 제한 적 이므로 사용하는 것을 추천하지 않는다.

다양한 예제가 있지만, 읽기 불편하다.

 

옛 스타일 포맷팅은 계속 사용이 가능 하지만, Python3에서는 {}.format() , 3.6이상에서는 f-문자열을 추천한다.

사용법은 다음과 같다.

다음과 같이 한개도 전달 가능 하다.
다음과 같이 두개도 전달 가능 하다.
1,0 이렇게 번호를 주어 위치를 바꿀 수도 있다.
다음과 같이도 가능하다.
딕셔너리에도 가능하다. 여기서 0은 딕셔너리 d의 첫번째 인수이다.

포메팅 문자열 정의는 다음과 같다.
맨 처음 “:” 이 온다

그 다음 채우기 문자(optio으로 생략 가능, 기본값 “ “)

그 다음 선택적 정렬 문자 , 왼쪽 정렬이 기본값 이며, < 왼쪽, > 오른쪽 ^ 가운데 정렬

숫자에 대한  부호 문자 (옵션) 기본값으로 음수에만 부호(“-”)가 붙는다.
최소너비(옵션) 최소너비 및 최대 문자를 구한다.
최대문자(옵션)

변환타입 등등..

예를 들면 다음과 같다.

다양한 출력 format 을 맞출 수 있다.

제일 최신 스타일이며, python 3.6 이상에서는 무조건 사용하는 것이 좋다.
첫 인용부호 앞에 문자 f 또는 F를 입력한다.

F문자열은 보다 코드가 읽기 쉬워지는 장점이 있다.
다음과 같은 표현식도 가능하다.

기본 출력 form
메서드를 넣는다, 첫 글자를 대문자로
3.8이상에서 이름과 값을 출력 하기 쉽다.

다음과 같이 표현식으로도 사용이 가능하다.

= 다음에 : 및 너비, 정렬과 같은 포매팅 인수가 사용 가능하다.

다양한 표현식으로 가능하다.

연습문제는 다음과 같이 github에 upload 할 것이다.

https://github.com/kimhyeonwokk/introducing_python_solution

 

GitHub - kimhyeonwokk/introducing_python_solution: Practice Solution in Introducing Python Books

Practice Solution in Introducing Python Books. Contribute to kimhyeonwokk/introducing_python_solution development by creating an account on GitHub.

github.com

 

+ Recent posts