※파이썬을 오랜만에 쓰기 앞서 빠른 복습을 위해 책을 한번 훑고
까먹거나 부족한 부분을 채워 넣은 후 파이썬으로 백준 문제풀이를 할 예정입니다.
01 파이썬 시작하기
▶식별자
파이썬은 스네이크 케이스와 캐멀 케이스를 둘 다 사용.
첫글자가 소문자면 스네이크, 대문자면 캐멀 케이스 캐멀케이스면 클래스
- 식별자는 숫자로 시작 x
- 파이썬 주석은 #
02 자료형
●02-1 자료형과 문자열
type() 함수로 자료형 확인
▶문자열
("""ABCDE
FGHIJ""")
결과 ABCDE
FGHIJ
("""\ABCDE
FGHIJ\""")
위와 같이 \기호를 넣으면 첫 줄과 마지막 줄 출력 시 줄 바꿈 없음
: 슬라이싱 할 때는 마지막 숫자 포함x
ex) 1:4이면 인덱스 1,2,3까지
●02-2 숫자
// 정수 나누기 연산자
ex) 3/2 = 1.5 3//2 = 1
●02-4 변수와 입력
"{}".format(10) 을 하면 숫자 10이 문자열 "10"이 된다.
"{} {}".format(10,20)처럼 {} 개수와 format함수 매개변수 개수를 맞추어야 함.
"{:5d}".format(52) 을 하면 ___52와 같이 원하는 칸에 위치시킬 수 있다.
0채우기 "{:05d}".format52 -> 00052 부호 표시하기 "{:+d}".format(52) -> +52
기호 부분공백 "{: d}".format(52) ->_52 기호를 공백 앞쪽에 배치 "{:=+5d}".format(52) -> +__52
의미 없는 소수점 제거 "{:g}".format(52.0) -> 52
.strip() 문자열 양옆 공백 제거 .lstrip() 문자열 왼쪽 공백 제거 .rstrip() 문자열 오른쪽 공백 제거
.find() 왼쪽부터 찾아서 처음 등장하는 위치 인덱스 반환
.in() 문자열 내부에 특정 문자열 있는지 확인
.split() 문자열을 특정한 문자로 자름
.upper()와 같은 함수들은 비파괴적 함수이기 때문에 기존 식별자의 원본을 바꾸는 것이 아님.
03 조건문
import datetime
datetime.datetime.now() 함수로 현재의 시간을 받아올 수 있음
●03-2 if-else와 elif 구문
else와 elif 구문은 위의 코드부터 내려오면서 조건을 확인할 때 앞선 조건은 제외된 상태로 넘어오기 때문에
하위 값에서 원하는 값만 기준으로 코드를 짜면 됨.
ex) elif 4.2 <= x < 4.5:
elif 3.5 <= x < 4.2: 가 아닌
elif 4.2 <=x:
elif 3.5 <=x:
조건문에서 False로 반환되는 값 = None, 0(0.0), 빈 컨테이너(빈 문자열, 빈 바이트열, 빈 리스트 등)
IndentationError = 들여 쓰기 오류
if 조건문 사이에는 들여쓰기 4칸을 넣고 코드를 작성해야 돼서 if 구문 사이엔 pass라는 키워드를 넣어서
"아무것도 안 함" 역할을 할 수 있다.
pass 대신 raise NotImplementedError를 사용하면
코드는 실행되지만 해당 문구를 넣은 부분이 구현되지 않은 부분이라 판단하고 오류를 발생시킨다.
이를 통해 구현 없이 넘어가는 부분이 생기지 않도록 상기시켜 줄 수 있다.
04 반복문
●04-1 리스트와 반복문
.append() = list 마지막에 요소 추가
.insert(x,요소) = list의 x번째 인덱스에 요소 추가
.extend(다른 list) = 두 리스트를 합치는 파괴적 처리 함수
del 리스트명[인덱스] = 리스트의 특정 인덱스에 있는 요소 제거
리스트명.pop(인덱스) = 리스트의 특정 인덱스에 있는 요소 제거, 매개변수 미입력 시 마지막 요소 제거
리스트.remove(값) = 인덱스가 아닌 지정한 값을 기준으로 요소 제거
리스트.clear() = 리스트 요소 전체 제거
for 반복자 in 반복할 수 있는 것:
이때 반복할 수 있는 것은 문자열, 리스트, 딕셔너리, 범위 등이 있음.
numbers = [[1,2,3],[4,5,6,7],[8,9]]
for i in range(len(numbers)):
for j in range(len(numbers[i])):
print(numbers[i][j])
#위의 방법보다 밑의 방법이 쉽다. 파이썬 반복문에 익숙해지도록 하자
for i in numbers:
for j in i:
print(j)
●04-2 딕셔너리와 반복문
딕셔너리 = 인덱스를 기반으로 저장하는 리스트와 달리 키를 기반으로 저장
NameError : 딕셔너리의 키에 단순한 식별자를 입력하면 이를 변수로 인식하기 때문에 선언되지 않은 변수 때문에 발생하는 에러
del 딕셔너리명[키] = 특정 키에 해당하는 요소 제거
KeyError : 딕셔너리에 존재하지 않는 키에 접근할 때 발생
value = dictionary.get(키) get() 함수를 이용하면 키에 해당하는 값을 반환하고, 존재하지 않는 키일 경우 None 반환
●04-4 문자열, 리스트, 딕셔너리와 관련된 기본 함수
reversed() = 함수의 결과가 generator
※Generator = Iterator를 생성하는 함수. Iterator는 next() 함수를 적용해 값을 요소 하나하나씩 꺼낼 수 있는 객체
enumerate() = 인덱스와 값을 동시에 포함하여 리턴하는 함수
#순서가 있는 자료형에서 사용
for i, value in enumerate(example_list):
print("{}번째 요소는 {}입니다.".format(i, value)
item() = 딕셔너리에 있는 키와 값들의 쌍을 리턴하는 함수
for key, element in example_dictionary.items():
print("dictionary[{}] = {}".format(key, element))
count() = 반복 가능한 객체에서 문자열을 매개변수로 받아 개수를 센다.
a = "oxoxoooxox"
a.count('ox')
▶리스트 내포
리스트 이름 = [표현식 for 반복자 in 반복할 수 있는 것 (if 조건문)]
#코드를 직관적으로 만들고 실행 속도를 높여준다.
ex) array= [i*i for i in range(0,20,2)]
▶구문 내부에 여러 줄 문자열 사용 시 불필요한 들여 쓰기 발생 해결법
print((
"가나다라\n"
"마바사아"
)
또는
print("\n".join[
"가나다라",
"마바사아"
])
▶진수 변환
{:b}.format(10) = '1010' => 십진수 10을 2진수로
int("1010",2) = 10 => 이진수 1010을 10진수로
{:o}.format(10) = '12' => 십진수 10을 8진수로
int("12",8) = 10 => 이진수 12를 8진수로
'Lauguage > Python' 카테고리의 다른 글
[Python] GIL (Global Interpreter Lock) (0) | 2024.06.11 |
---|---|
[Python] [혼자 공부하는 파이썬] Chapter 8. 클래스 (0) | 2024.06.10 |
[Python] [혼자 공부하는 파이썬] Chapter 6-7 예외처리, 모듈 (1) | 2024.06.08 |
[Python] [혼자 공부하는 파이썬] Chapter 5. 함수 (1) | 2024.06.06 |
[Python] 객체, Iterator, Generator (1) | 2024.06.05 |