Python 공부하기
#1.
그냥 개인적으로 파이썬 공부하면서 정리한 내용입니다...
중간중간 계속 업데이트 됩니다.
오타 및 답이 틀린경우가 있을 수 있습니다.
1. 변수
1) 포맷 코드
%s : 문자열(String)
%d : 정수 (Integer)
%f : 실수형 (float)
%c : 문자(character)
%o : 8진수
%x :16진수
%% :리터럴 %
예)
> 'Hello world !'
"%d won" %3000
> '3000 won'
"Hi I need %d %s." %(3,"people")
"Hi, I need {0} people and {1} days".format(3,10)
> 'Hi I need 3 people and 10 days'
"Hi, I need {1} people and {0} days".format(3,10)
> 'Hi I need 10 people and 3 days'
{}안데 들어가는 값은 인덱스 0: 첫번째, 1 :두번째
"Hi, I need {0} people and {1} days".format(3,10)
> 'Hi I need 10 people and 3 days'
"Hi, I need {0} books and {pen} pens.".format(10, pen=1)
> 'Hi, I need 10 books and 1 pens.'
2) 소수점 표현하기
"%0.5f" %2.44442355
> '2.44442'
"완치될 확률은 %d%% 입니다." %70
> '완치될 확률은 70% 입니다.'
전부 동일한결과 (소수3번째 자리에서 반올림하여, 소수점2번째자리까지 표시)
a=float(input()) #입력받음
print("{0:.2f}".format(a))
print("%.2f"%a)
print(format(a,".2f"))
3) 불린(boolen)
문자열: "aaa" ->참, "" ->거짓
리스트: [aa,bb,cc] ->참, []->거짓
튜플: ('a') ->참 ()->거짓
딕셔너리: {} ->거짓
숫자: 1->참, 0->거짓
None ->거짓
4) 연산
* : 곱하기
** : 거듭제곱
/ : 결과 나눈 전체
// : 나누기 이후 몫
% : 나누기 이후 나머지
5) 문자열 관련 함수
- count
ex)
a="test the page"
a.count('t')
>3
- find / index
문자열에 대한 위치를 알려준다.
차이는 그 문자열이 존재하지 않을 때이다.(find : -1, index : valueError )
ex)
a.find('s')
>2
a.find('b')
>-1
a.index('s')
>2
a.index('b')
> Traceback (most recent all last):
File "<stdin>", line 1 in <module>
ValueError: substring not found
- join : 문자열 삽입
".".join("aaaa")
> 'a.a.a.a'
" ".join("bbbb")
> 'b b b b'
- uppser/lower : 알파벳 전부 대문자/소문자
- lstrip/rstrip/strip : 공백제거(왼쪽,오른쪽,전체)
- replace : 문자열에서 원하는 문자열을 변경해준다.
사용법 : a : 문자열, a.replace('바꾸고 싶은 문자', '바꿀 문자', 횟수)
예)
* replace를 사용하고 저장하고 싶으면 새로운 변수에다가 저장해 줘야한다.
- split
split() : 띄어쓰기
split(':'): ':' 글자로 나누기
ex)
yyyy,mm,dd=map(int,input().split(':'))
print(dd,mm,yyy,sep='-')
출력 : 21-08-2021
6) 주석
한줄만 주석처리 : #한줄입력
여러줄 주석처리 : """ 여러문장입력 """
2. 변환
#1. 10진수 > 16진수
a=int(input())
print("%x"%a)
#2. 16진수 > 8진수
a=int(input(),16)
print("%o"%a)
#3.
a=ord(input())
print(a)
#4.
a=int(input())
print(chr(a))
#5.
a=input()
b=ord(a)
print(chr(b+1))
#6.
b=int(input())
a=input()
print(b*a)
hex()
int(x, 16)
int(x, 8)
a=1
b='20'
int(b)
str(a)
tutple(a)
list(a)
3. 입력, 출력
# 1 입력 받기
input()
input().split()
map(int,input().split())
# 2 출력
print()
print(x, end='')
print(a,b,c,d,sep=':')
* sep : seperator (구분자)
** end : end 옵션을 사용하면 그 문자 뒤에 이어서 출력한다. end를 사용하지 않으면 자동으로 한줄 띄어준다.
4. 자료구조
1) 문자열 :
a="test is fun"
@ 인덱싱 : 리스트에서 해당 번호에 값을 찾는다. (시작은 0)
a[1] = 'e'
@ 슬라이싱 (범위: 1<=슬라이싱<2, 첫번째 시작은 0)
a[1:3] = es
a[:] ='test is fun' # 리스트 전체 출력
a[3:] = 't is fun'
a[:6] = 'test i'
a[::-1] = 'nuf si tset' # 역순으로 출력
a[1:6:2] ='eti' # a[1]~a[5]까지 2개씩 증가하면서 출력 즉, a[1],a[3],a[5]만 출력
2) 리스트(배열) : []
a=[] # 리스트 선언
b=[1,2,3]
c=[1,[2,3,4],[5]]
리스트 : 인덱싱 가능
리스트 연산 : *, +,len()
a=[1,2,3,4,5,6,7]
- 값 수정 : a[1]=1 > a=[1,1,3,4,5,6,7]
- 값 삭제 : del a[2] > a=[1,1,4,5,6,7], del a[4:] > a[1,1,4,5]
- 값 맨 뒤에 추가 : append
- 값 추가(삽입) : insert
- 확장 : extend
- 정렬 : sort
- 뒤집기 : reverse
- 삭제 : remove
- 마지막 값 출력하고 삭제 : pop
- 개수 : count
- 위치 : index
a=b=[1,2,3]
b[0]=3
print(a)=[4,2,3]
id(a)=id(b)
3) 튜플 : ()
* 튜플과 리스트의 차이
1. 우선 괄호 모양이 다르다.
- 리스트 []
- 튜플 ()
2. 수정,삭제 등 가능여부
- 리스트 가능
- 튜플 불가능
3. 그 이외의 인섹싱, 슬라이싱 등은 : 모두 가능
(1,2,3)이라는 튜플에 4라는 값을 추가하여 (1,2,3,4)처럼 만들어 출력해 보자.
a = (1, 2, 3)
a = a + (4,)
print(a) # (1, 2, 3, 4) 출력
a 튜플에 (4, )라는 튜플을 더하면 된다.
단, 이때 만들어지는 a + (4, )의 결과는 a 값이 변경되는 것이 아니라(튜플은 그 값을 변경할 수 없다) 새로운 튜플이 생성되고 그 값이 a 변수에 대입되는 것임에 유념하자.
4) 딕셔너리: {키:값,키:값,키:값}의 형태
1. 값 입력
a={1:"apple"}
a[2]="bear"
print(a) > {1:'apple', 2:'bear'}
a['name']='jenna'
print(a) > {1:'apple',2:'bear','name':'jenna'}
2. 키 값으로 삭제
del a[1]
> {2:'bear','name':'jenna'}
3. 출력
a={2:'bear', 'name':'jenna', 1:'apple'} 일 때,
- key 값으로 출력
a['name'] = jenna
a.get('name')=jenna
** 둘의 차이점 : 괄호
a[키]에서 해당하는 값이 없으면 에러
a.get(키)에서 해당 캆이 없으면 출력값이 없음
- key 전체 출력
a.keys()
> dict_keys([2, 'name', 1])
- 값 전체 출력
a.values()
> dict_values(['bear','jenna','apple'])
- 키:값 전체 출력
a.items()
> dict_items([(2,'bear'),('name','jenna'),(1,'apple')])
4. 해당 키가 딕셔너리에 있는지 확인 (in)
'name' in a
결과는 true/false
5) 집합 (set)
* 집합의 특징 2가지
특징1 : 중복값이 없다
특징2: 순서가 없다.
# 집합 지정
a1=set([1,2,3,4,5])
a2=set([4,5,6,7,8)]
# 교집합 &, intersection
# 합집합 |, union
# 차집합 -, difference
# 1개 값 추가 : add
# 여러개 값 추가 : update
# 특정 값 제거 : remove
5. 문법
(if, while, for)
1) if 문
문장1
elif 조건:
문장2
elif 조건:
문장3
else :
문장4
** 조건의 여러개 만족하더라도 하나의 조건이 만족되면 if 문 전체에서 나간다.!!
2) while 문
(반복문)
* while문 나가기:
1. break
2. 조건이 거짓이 될 때
3) for 문
for 변수 in 범위 :
(실행문)
-사용법-
for i in 리스트 :
for i in range(범위) :
for 변수들 in 리스트:
for 변수들 in range(범위) :
#1
test=[1,2,3]
for i in test:
print(i, end=' ')
결과 :
1 2 3
#2_1
a=[(1,2),(3,4),(5,6)]
for (first,last) in a:
print(first+last, end=' ')
결과:
3 7 11
#2_2
b=[(1,1,1),(2,3,4),(0,1,3)]
for (first, mid, last) in b:
print("첫번째+마지막:",first+last," 중간값:", mid)결과 :
첫번째+마지막: 2 중간값: 1
첫번째+마지막: 6 중간값: 3
첫번째+마지막: 3 중간값: 1
#3 ; for, continue
for문에서 continue가 사용되면 for문 처음으로 돌아간다.
happy=[10,20,30,50,25,33,45,5,90]
temp=1
for i in happy:
print()
print(i,':',end=' ')
if i >= 30 :
print("30이상",end=' ')
continue
print('...',end=' ')
결과 :
10 : ...
20 : ...
30 : 30이상
50 : 30이상
25 : ...
33 : 30이상
45 : 30이상
5 : ...
90 : 30이상
#4 ; for , range 사용
for i in range(10):
print(i,end=' ')
결과 :
0 1 2 3 4 5 6 7 8 9
for i in range(2,10):
print(i,end=' ')
결과:
2 3 4 5 6 7 8 9
for i in range(2,10,2):
print(i,end=' ')
결과:
2 4 6 8
#5
a=[1,2,3,4]
result = [num * 3 for num in a]
print(result)
결과
[3, 6, 9, 12]
[표현식 for 항목 in 반복가능객체 if 조건문]
[표현식 for 항목1 in 반복가능객체1 if 조건문1
for 항목2 in 반복가능객체2 if 조건문2
...
for 항목n in 반복가능객체n if 조건문n]
Q. 3이랑 짝수만 곱하기
even1=[3*x for x in range(1,10) if x%2==0]
print(even1)
결과
[6, 12, 18, 24]
Q. 1-9범위에서 x는 3의 배수일 때, y는 5보다 작을 때 곱한다.
gogo=[x*y for x in range(1,10) if x%3==0
for y in range(1,10) if y <5]
print(gogo)
결과:
[3, 6, 9, 12, 6, 12, 18, 24, 9, 18, 27, 36]