잘 알지 못했던 것 위주로 정리함!
아래 코드를 살펴보자
import webbrowser #파이썬 표준 라이브러리인 webbrowser 모듈을 임포트(import).
import json #파이썬 표준 라이브러리인 json 모듈을 임포트.
from urllib.request import urlopen #표준라이브러리 urllib.request에서 urlopen 함수만 임포트함.
#inport문과의 구분을 위한 빈 줄.
print("Let's find an old website.") #텍스트 출력.
site = input("Type a website URL: ") #url을 입력하라는 내용을 출력하고, 사용자에게 URL 입력을 받아서 site라는 변수에 저장.
era = input("Type a year, month, and day, like 20150613: ") #년,월,일을 입력해라는 내용을 출력하고, 사용자에게 날짜 입력을 받아서 era 변수에 저장함.
url = "http://archive.org/wayback/available?url=%s×tamp=%s" % (site, era) #입력한 사이트와 날짜를 토대로 문자열 변수 url을 구성함.
response = urlopen(url) #해당 URL의 웹서버에 연결하여 웹서비스를 요청함.
contents = response.read() #응답 데이터를 가져와 contents 변수에 할당함.
text = contents.decode("utf-8") #내용을 JSON 형식의 텍스트 문자열로 디코딩하여 text 변수에 할당함.
data = json.loads(text) #텍스트를 데이터(파이썬 자료구조)로 변환함.
try: #오류를 확인. 오류가 없다면 다음 네줄을 시행하고, 실패하면 코드의 마지막 줄(except 문 다음줄)을 시행함.
old_site = data["archived_snapshots"]["closest"]["url"] #입력한 사이트와 날짜에 일치하는 항목이 있으면 세 단계의 딕셔너리에서 값을 추출. 다음 try문에 해당하는 코드를 들여쓰기함.
print("Found this copy: ", old_site) #찾은 URL을 출력.
print("It should appear in your browser now.") #URL이 브라우저에 표시될 것음 알림.
webbrowser.open(old_site) #찾은 URL을 웹브라우저에 표시.
except: #앞의 네 줄 중, 오류가 발생하면 이 줄로 점프.
print("Sorry, no luck finding", site) #사이트 찾기에 실패했다면 텍스트 메시지와 찾으려고 했던 URL을 출력함. 앞의 try문에서 예외가 발생할 때 except 문을 실행하므로 들여쓰기함.
이 코드는 웨이백 머신(https://.archive.org)의 인터넷 아카이브를 사용한다.
여기서 잠깐. 아카이브란?
소장품이나 자료 등을 디지털화하여 한데 모아서 관리할 뿐만 아니라 그것들을 손쉽게 검색할 수 있도록 모아 둔 파일. 정보통신 분야에서 백업용 또는 다른 목적으로 '한 곳에 파일들을 모아둔 것'을 아카이브라고 부른다. 간단히 말해 기록 보관소!
다시 코드로 돌아가보자. 위 코드는 URL과 날짜를 입력하면 웨이백 머신에 해당 날짜의 웹사이트 복사본이 있는지를 묻는다. 복사본을 찾으면 프로그램에 해당 정보를 반환한다. 그리고 URL을 출력하고 이를 웹 브라이저에 표시한다.
한마디로 이 과정은 데이터를 입력 받아서 인터넷을 통해 웹사이트와 통신하여, 일부 내용을 가져와서 URL을 추출하고 웹 브라우저가 해당 URL을 표시하도록 명령한다.
위 사진처럼 URL 입력란에 lolcats.com
을 입력하고 날짜 입력란에 20151022
를 입력하자. 그러면 아래 사진과 같은 웹페이지가 나타나고 그 아래 사진과 같이 최종 결과값을 반환한다.
파이썬 에디터에서 다음과 같은 코드를 작성해보자
# file: cal.py
import calendar
print(calendar(2022,2))
실행하면 다음과 같은 결과가 나온다.
나는 파이참 터미널에서 바로 코드를 작성하여 실행했다.
이 코드를 저장하려면 파이참에서 New - Python file를 클릭하여 코드를 작성 후 저장하면 된다.
파일명은 cal.py
로 저장하였다.
해당 코드를 run하면 위 사진처럼 결과가 잘 나온다.
코드
type(3-4j)
(3-4j).real
(3-4j).imag
(3-4j).conjugate()
결과
코드
e,f = 3.5, 5.3
결과
코드
e,f = 3.5, 5.3
e,f = f,e
print(e,f)
결과
변수에 예약어는 쓸 수 없다.
그렇다면 예약어는 어떻게 확인할까?
코드
import keyword
keyword.kwlist
결과
출력해보기!
bin(변수)
를 실행하면 변수 안에 있는 숫자 값을 이진수로 변환해준다.
마찬가지로 oct(변수)
, hex(변수)
를 쓸 수 있다.
True와 False만 있는 불리언
타입은 정수로 변환하면 각각 1,0을 반환한다.
반대로 bool()
함수를 사용하면 정수에 해당하는 불리언 값을 반환한다.
위 사진에서 float()
와 str()
변환을 실험한 결과도 있으니 확인하길 바란다.
다음 기타 부동소수점 숫자를 불리언 값으로, 숫자 구분 기호(_), 텍스트 문자열을 정수로 변환해본다.
마지막으로 타입 변환 후 해당 변수의 타입 유형을 확인해보자.
위 사진을 통해 문자열을 넣은 변수는 타입 변환을 하더라도 그 변수 자체의 성질은 그래도 문자열을 유지하고 있음을 확인할 수 있다.
코드가 짧으면 프로그램을 더 쉽게 읽을 수 있기 때문에 가능한 한 한 번에 해석할 수 있도록 코드를 한 줄 안에 넣기를 권장한다.
코드가 길어질 때 한 줄을 유지하기 위해서는 백슬래쉬(\)
문자를 입력하면 된다. 그러면 줄이 다음 줄로 넘어간다 하더라도 한 줄로 인식한다.
아래의 예시를 통해 확인해보자.
어떤 문자가 모음(vowel)인지 확인하려면 어떻게 해야 할까?
위와 같이 한 변수에 여러 값을 비교할 때 파이썬 멤버십 연산자``in
을 사용할 수 있다. 모음 문자로 구성된 문자열을 사용해 다음과 같이 간단히 확인할 수 있다.
vowels란 변수에 문자를 넣고 letter 안에 있는 변수가 vowels란 변수에 있는 값이 있는게 맞는지 아닌지 True or False를 판단한 다음 if문
을 활용해 print
한다.
바다코끼리 연산자는 Python 3.8의 새로운 기능이다.
형식은 다음과 같다.
이름 := 표현식
:=
이 모양이 마치 바다코끼리 같다고 하여 이러한 이름이 붙여졌다고 한다.
테스트 코드
위 코드를 바다 코끼리 연산자로 변경하면 다음과 같다.
시퀀스(sequence): 데이터에 순서(번호)를 붙여 나열한 것. 특정 위치의 데이터를 가리킬 수 있다.
연오의 파이썬이라는 사이트에 해당 시퀀스 모델에 대해 굉장히 잘 설명해놓아서 링크를 걸어놓았다.
연산자 | 기능 | 문법 | 설명 |
---|---|---|---|
<< | 비트 왼쪽 시프트 | a<<b | a의 비트를 b번 왼쪽으로 이동 |
>> | 비트를 오른쪽 시프트 | a>>b | a의 비트를 b번 오른쪽으로 이동 |
& | 비트 AND | a&b | a와 b의 비트를 AND 연산 |
| | 비트 OR | a | b | a와 b의 비트를 OR 연산 |
^ | 비트 XOR | a^b | a와 b의 비트를 XOR(배타적 OR) 연산 |
~ | 비트 NOT | ~x | x의 비트를 뒤집음(ㅇ<->1) |
"""
혹은 ""
을 이용하여 여러 줄의 문자열을 정의할 수 있다.
print(full_name[2:6])
ung
print(full_name[2:5])
ung
을 보면 어라? [2:6]
와 [2:5]
는 다른데 왜 print
된 값은 똑같지? 라고 생각할 수 있다. 이유는 5번째에 공백, 즉 null 값이 들어있기 때문! 한마디로 우리가 보기에는 똑같이 표현되어 있다고 생각할 수 있지만
print(full_name[2:6])
ung
에서 결과값은 정확하게는 [u,n,g,null]
이 표현된 것이다.
문자의 반복
주의하기
문자열 객체와 수치형 객체는 +연산을 할 수 없다.
"Python"+3
을 입력하면 error 코드가 뜨는 걸 확인할 수 있다.
>>> "Python"+3
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
메서드 | 설명 |
---|---|
upper() | 문자열을 대문자로 변환 |
lower() | 문자열을 소문자로 변환 |
swapcase() | 대<->소문자를 전환 |
capitalize() | 문자열의 첫 글자를 대문자로 변환 |
title() | 문자열의 각 단어의 첫글자를 대문자로 변환. 나머지는 소문자로 변환 |
아래는 대소문자 변환 관련 예제이다.
메서드 | 설명 |
---|---|
count() | 문자열 내 검색어 개수를 반환 |
find() | 문자열 내 첫번째검색된 위치의 인덱스를 반환 |
index() | 문자열 내 검색된 위치의 인덱스를 반환 |
rindex() | 문자열 내 오른쪽으로부터 검색된 위치의 인덱스를 반환 |
startswitch() | 문자열이 지정된 검색어로 시작하는지 여부 반환 |
endswitch() | 문자열이 지정된 검색어로 끝나는지 여부 반환 |
아래는 검색 관련 예시이다.
중간에 error문구는 잘못 적어서 나타난 것.
메서드 | 설명 |
---|---|
strip() | 문자열 내 좌우 공백문자를 삭제. 좌우 삭제할 문자열을 지정 가능 |
lstrip() | 문자열 내 왼쪽의 공백문자를 제거 |
rstrip() | 문자열 내 오른쪽 공백문자를 제거 |
replace() | 문자열 내 지정된 검색어를 다른 문자열로 치환 |
아래는 편집, 치환 관련 예시이다.
메서드 | 설명 |
---|---|
center() | 문자열을 가운데로 정렬 |
ljust() | 문자열을 왼쪽으로 정렬 |
rjust() | 문자열을 오른쪽으로 정렬 |
zfill() | 자리수를 지정하고 빈 공간을 0로 채움 |
아래를 정렬 관련 예시이다.
메서드 | 설명 |
---|---|
split() | 문자열을 공백문자(혹은 지정된 문자)를 기준으로 분리 |
rsplit() | 문자열을 공백문자(혹은 지정된 문자)를 기준으로 오른쪽부터 분리 |
join() | 문자열을 지정된 기호로 합침 |
splitlines() | 문자열을 개행문자를 기준으로 분리 |
아래는 분리, 결합 관련 예시이다.
메서드 | 설명 |
---|---|
isdigit() | 문자열이 숫자로 구성되어 있는가 여부를 반환 |
isalpha() | 문자열이 알파벳으로 구성되어 있는가 여부를 반환 |
islower() | 문자열이 소문자로 구성되어 있는가 여부를 반환 |
isupper() | 문자열이 대문자로 구성되어 있는가 여부를 반환 |
isspace() | 문자열이 공백문자로 구성되어 있는가 여부를 반환 |
아래는 판별 관련 예시이다.
코드 | 설명 |
---|---|
%s | 문자열(string) |
%c | 문자 1개(character) |
%d | 정수(integer) |
%f | 부동 소수(floating point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal% |
아래는 문자열 포맷 코드를 활용한 예시이다.
위 사진에서 코드"interest rate is %2.4f" % 1.24
에서 %2.4f
가 뜻하는 것은 정수부 2자리, 소수부 4자리를 나타내라는 것이다.
예시를 확인하여 바로 학습해보자.
format_map
메서드를 사용하면 이름 기반으로 map의 데이터 형식을 이용해 포맷을 지정할 수 있다.
f-문자열은 파이썬 3.6에서 등장한 최신 ㅡ타일.
예시
>>> thing = 'wereduck'
>>> place = 'werepond'
>>> f'The {thing} is in the {place}'
'The wereduck is in the werepond'
>>> f'the {thing.capitalize()} is in the {place.rjust(20)}'
'the Wereduck is in the werepond'
>>> f'The {thing:>20} is in the {place:.^20}'
'The wereduck is in the ......werepond......'
>>> f'{thing =}, {place =}'
"thing ='wereduck', place ='werepond'"
메서드 | 설명 |
---|---|
[:] | 처음부터 끝까지 전체 시퀀스를 추출한다. |
[ start : ] | start 오프셋부터 끝까지 시퀀스를 추출한다. |
[ : end ] | 처음부터 (end -1)오프셋까지 시퀀스를 추출한다. |
[ start : end ] | start 오프셋부터 (end -1) 오프셋까지 시퀀스를 추출한다. |
[ start : end : step ] | step만큼 문자를 건너뛰면서, start 오프셋부터 (end -1) 오프셋까지 시퀀스를 추출한다. |
문자열의 오프셋은 다음 사진을 참고하자.
아래 사진에서 흰색 영역이 추출하는 값을 의미한다.
이제 슬라이스의 여러 예시를 활용해보자.
슬라이스 백스텝의 예시
파이썬 스크립트 모드는 파이참에서 터미널을 사용하거나 파이썬 콘솔을 사용하면 된다.
위 사진처럼 파이참 하단에 있으니 체크!
실무에서 파이썬으로 코딩할 때 헷갈리는 게 있으면 아래와 같이 구글링 해보자
python cheat sheet
치트 시트를 참고하여 지금 내게 어떤 함수, 변수 등등이 필요한지 참고하여 활용할 수 있다.
아래 링크도 참고하자.
생활코딩 치트시트
<처음 시작하는 파이썬(2판)>바로가기
<Python 기본 프로그래밍>,비트교육센터