파이썬 기초에 대한 이해
파이썬 개념인터프리터- 변수 및 자료형(리스트, 튜플, 딕셔너리 필수)
- 제어문 및 반복문(이중 반복문 포함)
- 함수(lamda함수 포함)
- 클래스 개념
- 모듈 패키지 개념
- 연산자(비교, 산술, 비트 등 모든 연산자 포함)
- 파일 입출력
1. 파이썬이란 무엇인가?
1.1. 파이썬이란?
귀도 반 로섬(Guido Van Rossum)이 개발한 인터프리터 언어. 파이썬의 사전적 의미는, 고대 신화에 나오는 파르나소스 산의 동굴에 살던 큰 뱀을 뜻하며 아폴로 신이 델파이에서 파이썬을 퇴치했다는 이야기가 전해지고 있다.
파이썬 프로그램은 공동 작업과 유지 보수가 매우 쉽고 편하다. 인스타그램, 드롭박스, 구글 등이 파이썬으로 작성된 많이 알려진 예들이다.
1.2. 파이썬의 특징
프로그래밍이란 인간이 생각하는 것을 컴퓨터에 지시하는 행위라고 할 수 있다. 파이썬은 다른 프로그래밍 언어보다 사람이 생각하는 방식을 그대로 잘 표현하는 언어이다. 프로그램을 모르더라도 직관적으로 무엇을 뜻하는지 알 수 있다.
if 4 in [1,2,3,4]
print('4가 있습니다.')
또한 파이썬은 다른 언어에 비해 문법도 쉬운편이다. 자료형, 함수, 클래스 만드는 법 등을 익히는데 정말 시간이 오래걸리지 않는다.
오픈 소스(Open Source)란, 저작권자가 소스 코드를 공개하여 누구나 별다른 제한 없이 자유롭게 사용.복제.배포.수정할 수 있는 소프트웨어를 의미한다. 파이썬은 오픈소스이다.
파이썬은 시스템 프로그래밍이나 하드웨어 제어와 같은 매우 복잡하고 반복 연산이 많은 프로그램을 만드는 것과는 어울리지 않는다. 대신 C와 함께하며 빠른 실행 속도가 필요한 부분은 C로 만들고 뼈대는 파이썬이 만들어서... 이런 방식으로 많이 사용된다. 파이썬은 C와 찰떡궁합이라는 말도 있다.
파이썬은 간결하다. Perl과 같은 언어가 100가지 방법으로 하나의 일을 처리할 수 있다면, 파이썬은 가장 좋은 방법 1가지만 사용하는 것을 선호한다. 이러한 이유로 공동 작업과 유지 보수가 아주 쉽고 편하다.
languages = ['python', 'perl', 'c', 'java']
for lang in languages:
if lang in ['python', 'perl']:
print("%s need interpreter" % lang)
elif lang in ['c', 'java']:
print("%s need compiler" % lang)
else:
print("should not reach here")

-> languages라는 리스트를 만든다
-> for문을 사용해 languages 리스트에 포함된 각 단어 lang에 대해 순회한다.
1.3. 파이썬으로 무엇을 할 수 있을까?
어떤 프로그래밍 언어가 어떤 일에 효율적인지를 안다면, 프로그래머의 생산성은 크게 증가한다. 파이썬으로 할 수 있는 일과 없는 일을 알아보자
유틸리티란, 컴퓨터 사용에 도움을 주는 여러 소프트웨어를 말한다. 파이썬은 운영체제의 시스템 명령어를 사용할 수 있는 각종 도구를 갖추고 있기 때문에 이를 바탕으로 갖가지 시스템 유틸리티를 만드는 데 유리하다.
GUI(Graphic User Interface) 프로그래밍이란 쉽게 말해 화면에 또 다른 윈도우 창을 만들고 그 창에 프로그램을 동작시킬 수 있는 메뉴나 버튼, 그림 등을 추가하는 것이다.
파이썬은 접착(glue) 언어라고도 부르는데, 그 이유는 다른 언어와 잘 어울려 결합해서 사용할 수 있기 때문이다. C, C++등. 이외에도 데이터베이스 프로그래밍, 데이터 분석, 사물 인터넷 등에 활용할 수 있다.
파이썬은 시스템과 밀접한 프로그래밍 영역의 엄청난 횟수의 반복과 연산이 필요한 프로그램 또는 데이터 압축 알고리즘 개발 프로그램 등을 만드는데 사용하기는 힘들다. 또한 모바일 프로그래밍, 예를 들어 안드로이드/아이폰 앱을 개발하는 것은 아직 어렵다.
1.4. 파이썬 둘러보기

위와 같은 창을 '파이썬 대화형 인터프리터'라고 부른다. 인터프리터란, 사용자가 입력한 소스 코드를 실행하는 환경을 뜻한다.
-> '파이썬 대화형 인터프리터'는 간단히 '파이썬 셸'이라고도 부른다
-> '>>>'는 프롬프트(prompt)라고 한다.
<반복문-for>
for a in [1,2,3]:
print(a)

-> 리스트의 앞에서부터 하나씩 꺼재어 a 변수에 대입한 후 print(a)를 수행한다.
<함수 사용>
def add(a,b):
return a+b
print(add(3,4))
예약어란, 프로그래밍 언어에서 이미 문법적인 용도로 사용하고 있는 단어를 말한다. def는 함수를 만들 때 사용하는 예약어다.
+) IDLE 셸 창(Shell Window): IDLE 에디터에서 실행한 프로그램의 결과가 표시되는 창으로써 파이썬 셸과 동일한 기능을 수행한다. IDLE을 실행하면 가장 먼저 나타나는 창이다.
+) IDLE 에티터 창(Editor Window): IDLE 에티터가 실행되는 창이다.
+) 윈도우 키 + R 그리고 cmd를 치면 명령 프롬프트 창이 열린다. 실무에서는 여기서 파이썬을 자주 사용한다. 비주얼 스튜디오 코드, 파이참 등의 에디터도 있으니 사용해보자.
2. 파이썬 프로그래밍의 기초, 자료형
2.1. 숫자형
-정수형(Integer)
양의 정수, 0, 음의 정수
-실수형(Floating-point)
소수점이 포함된 숫자를 의미한다. '컴퓨터식 지수 표현 방식'으로 파이썬에서는 4.2e10 or 4.2E10 처럼 표현하는 경우가 있다. 각각은 4.2 * 10^10을 의미한다. 4.2e-10은 4.2 * 10^-10을 의미한다.
-8진수와 16진수
8진수(Octal)를 만들기 위해서는 숫자가 0o 또는 0O로 시작하면 된다. 16진수(Hexadecimal)을 만들기 위해서는 0x로 시작하면 된다. 8진수와 16진수는 파이썬에서 잘 쓰이지는 않는다. ex. 0o177, 0x8ff
2.1.1. 사칙연산자
- **: x의 y제곱을 나타낸다. 2 ** 4 = 16
- %: 나눗셈 후 나머지를 반환하는 연산자. 7 % 3 = 1, 3 % 7 = 3
- //: 나눗셈 후 몫을 반환하는 연산자. 7 // 4 =1
- /: 나누기 연산자이다. 7 / 4 = 1.75
2.2. 문자열 자료형
문자열(string)이란 문자, 단어 등으로 구성된 문자들의 집합을 의미한다. 문자열은 큰따옴표(" "), 작은따옴표(' '), 큰 따옴표/작은 따옴표 3개(""" """), 백슬래시(\)로 둘러쌓인다는 특징이 있다. 왜 표현 방법이 여러가지인지 알아보자. 추가로, 예를들어 123은 숫자형이지만 '123'은 문자형이다.
<큰따옴표/작은따옴표 1개>
print("Python's favorite food is perl")
print('Python's favorite food is perl')
-> 이 두 경우 오류 메시지가 뜬다. 'Python'이 문자열로 인식되어 구문 오류(SyntaxError: invalid syntax)가 발생한다.
<큰따옴표/작은따옴표 연속 3개>
print('''Python's favorite food is perl''')
print("""Python's favorite food is perl""")
>>>Python's favorite food is perl
>>>Python's favorite food is perl
->의도했던 그대로 출력된다.
<백슬래시를 사용>
print('Python\'s favorite food is perl')
print("Python\'s favorite food is perl")
>>>Python's favorite food is perl
>>>Python's favorite food is perl
-> 백슬래시를 사용해 큰따옴표/작은따옴표를 문자열에 포함시킬수도 있다. 백슬래시를 따옴표 앞에 삽입하면, 백슬래시 뒤의 따옴표는 문자열을 둘러싸는 기호가 아닌 문자(',") 자체를 뜻하게 된다.
2.2.1. 여러 줄인 문자열을 변수에 대입하고 싶을때
문자열이 항상 한 줄짜리만 있는것은 아니다.
- \n: 줄을 바꾸는 이스케이프 코드
- 연속된 큰/작은 따옴표 사용: \n의 가독성이 안좋다는 단점을 커버한다.
+) 이스케이프 코드: 프로그래밍할 때 사용할 수 있도록 미리 정의해둔 '문자 조합'이다. 주로 출력물을 보기 좋게 정렬하는 용도로 사용한다.
\n: 문자열 안에서 줄을 바꿀 때 사용\t: 문자열 사이에 탭 만큼의 간격을 줄 때 사용\, \', \": 문자를 그대로 표현할 때 사용- \r: 캐리지 리턴(줄 바꿈 문자). 현재 커서를 가장 앞으로 이동
- \f: 폼 피드(줄 바꿈 문자). 현재 커서를 다음 줄로 이동
- \a: 벨소리. 출력할 때 PC 스피커에서 삑 소리가 난다
- \b: 백스페이스
- \000: 널 문자
2.3. 문자열 연산하기
다른 언어에서는 쉽게 찾아볼 수 없는 기능으로, 파이썬에서는 문자열을 더하거나 곱할 수 있다.
<문자열 더해서 연결하기>
head = "Python "
tail = "is fun"
print(head + tail)
>>>Python is fun
<문자열 곱하기>
head = "Python "
print(head * 3)
>>>Python Python Python
-> 우리가 일반적으로 사용하는 숫자 곱하기의 의미와는 다르다. *는 문자열의 반복을 뜻하는 의미로 사용된다.
<문자열 길이 구하기>-len 함수 사용
a = 'Life id too short'
print(len(a))
>>>17
2.4. 문자열 인덱싱과 슬라이싱
인덱싱(Indexing)이란 무엇인가를 '가리킨다'는 의미이고, 슬라이싱(Slicing)은 무엇인가를 '잘라낸다'는 의미이다.
2.4.1. 문자열 인덱싱이란?
string = 'Hello Pythone'
print(string[0])
>>> H
string 문자열에서 H는 첫 번째 자리를 뜻하는 숫자 0이다. string[0]이 뜻하는 것응 string이라는 문자열의 0번째 문자를 의미한다. 위의 코드에서 볼 수 있듯이 string[0]는 문자열 안의 특정한 값을 뽑아내는 역할을 한다. 이러한 작업을 인덱싱이라고 한다.
a='Hello Python'
print(a[-1])
>>>n
문자열을 뒤에서부터 읽기 위해서는 마이너스(-) 기호를 붙인다. "뒤에서부터 첫 번째 문자를 표시할 때도 0부터 세어 a[-0]이라고 해야하지 않을까?" 라는 의문이 들 수도 있겠지만 0과 -0은 같은 것이기 때문에 a[-0]을 사용하면 a[0]으로 인식 되어, 뒤부터 세는게 아닌 앞에서 부터 세는 꼴이 된다.
2.4.2. 문자열 슬라이싱이란?
인덱싱에서 한 것처럼 한 글자씩 뽑아내는 것이 아닌, 한 단어를 뽑아낼 수는 없을까? a[0] + a[1] 등과 같이 접근할 수도 있겠지만 파이썬은 더 좋은 방법을 제공한다. 바로 슬라이싱 기법이다.
a = 'Hello Pythone'
print(a[0:5])
>>>Hello
a[시작 번호:끝 번호]를 지정할 때, [시작 번호] ~ [(끝 번호) - 1] 까지 출력된다.
+) 공백 문자도 알파벳 문자 등과 동일하게 취급된다.
a = 'Hello Pythone'
print(a[0:])
print(a[:])
print(a[:5])
>>>Hello Pythone
>>>Hello Pythone
>>>Hello
- [시작 번호:끝 번호]에서 시작 번호를 생략하면, 문자열의 처음부터 끝 번호까지 뽑아낸다
- [시작 번호:끝 번호]에서 끝 번호를 생략하면, 시작 번호부터 그 문자의 끝까지 뽑아낸다
- [시작 번호:끝 번호]에서 둘 다 생략하면, 문자열의 처음부터 끝까지를 뽑아낸다
슬라이싱에서도 마이너스(-) 기호를 사용할 수 있다. 이 경우 역시 끝 문자 전의 문자열 까지만 출력한다.
a[19:-7]
-> a[19] ~ a[-8]
아래 코드는 자주 사용하게 되는 슬라이싱 기법을 활용하여 문자열을 세 부분으로 나눈 경우이다. a[:4]는 a[4]가 포함되지 않는다는 것, 이 것만 잘 캐치하고 넘어가면 될 것 같다.
a = '20240826Rainy'
year=a[:4]
date=a[4:8]
weather=a[8:]
print(year)
print(date)
print(weather)
>>>2024
>>>0826
>>>Rainy
2.4.3. 문자열에서 한 문자만 교체하는 방법
Pithon을 Python으로 바꾸려면 어떻게 해야할까? 일반적으로 이 방법을 제일 먼저 떠올릴 것이다.
a=Pithon
a[1] = 'y'
print('a')
>>>NameError: name 'Pithon' is not defined
-> 하지만 오류가 발생한다. 이유는 '문자열의 요솟값은 바꿀 수 있는 값이 아니기 때문이다'. 그래서 immutable(불변의)한 자료형이라고도 불린다.
이 문제는 슬라이싱 기법을 사용해서 풀 수 있다.
a='Pithon'
print(a[0] + 'y' + a[2:])
print(a[:1] + 'y' + a[2:])
>>>Python
>>>Python
2.5. 문자열 포매팅
문자열에서 또 하나 알아야 할 것이 있다. 문자열 포매팅이란, 문자열 안의 특정한 값을 바꿔야 할 경우가 있을 때 이것을 가능하게 해주는 것이다.
2.5.1. 문자열 포메팅 따라하기
<숫자 대입>
print('I have %d apples' %3)
>>I have 3 apples
-> %d는 문자열 포맷 코드라고 부른다.
<문자열 바로 대입>
print('I have %s apples' %'big')
>>>I hace big apples
->문자열을 대입할 때는, 큰/작은 따옴표를 반드시 써주어야 한다.
<숫자 값을 나타내는 변수로 대입>
num=3
print('I have %s apples' %num)
>>>I hace 3 apples
<2개 이상의 값 넣기>
num=3
food='pizza'
print('I eat %d pices of %s' %(num,food))
>>>I eat 3 pices of pizza
->변수로 선언한 문자열을 넣을 경우에는 따옴표가 필요 없다
2.5.2. 문자열 포맷 코드
%s: 문자열- %c: 문자 1개
%d: 정수(Integer)%f: 부동 소수- %o: 8진수
- %x: 16진수
- %%: Literal(문자 % 자체)
-> 여기서 %s 포맷 코드는, 어떤 형태의 값이든 변환해 넣을 수 있다. %s는 자동으로 %뒤에 있는 값을 문자열로 바꾸기 때문이다.
print('I have %s apples' %3)
print('I have %s apples' %3.141592)
print('I have %s apples' %'big')
>>>I have 3 apples
>>>I have 3.141592 apples
>>>I have big apples
'🐠 Public > web' 카테고리의 다른 글
HTML & Internet (4) | 2024.09.05 |
---|---|
[공부] MySQL 기초 (9) | 2024.09.02 |
웹 사이트 개발_기초 문법 정리 (0) | 2024.09.01 |
웹 사이트 개발_JavaScript 기초 문법 정리 (0) | 2024.08.29 |
[빡공팟 Web Hacking Track] OT (0) | 2024.08.14 |