Python 기초
-숫자형의 사칙연산
>>> a=5
>>> a=3
>>> a+b
6
>>> a=5
>>> b=3
>>> a+b #덧셈
8
>>> a-b #뺄셈
2
>>> a*b #곱셈
15
>>> a/b #몫
1.6666666666666667
>>> a//b #몫의 정수 부분
1
>>> a%b #나머지
2
>>> a**b #a^b
125
-문자열 자료형
>>> a='python'
>>> a
'python'
>>> a="python"
>>> a
'python'
>>> a='''python'''
>>> a
'python'
>>> a="""python"""
>>> a
'python'
▶결과는 같은데 문자열 표현 방법이 여러가지인 이유는??
문자열 안에 작은 따옴표나 큰 따옴표를 포함하고 싶을 때 문자열의 시작과 끝을 구분짓기 위해서
문자열 중간에 작은따옴표를 넣고 싶다면
EX)
>>> a='py'thon'
File "<stdin>", line 1
a='py'thon'
^
SyntaxError: invalid syntax
>>> a="py'thon"
>>> a
"py'thon"
>>> print(a)
py'thon
>>> a='''py'thon'''
>>> a
"py'thon"
>>> print(a)
py'thon
작은 따옴표(' ') 사이에 작은 따옴표를 포함시키면 문자열의 처음과 끝 구분 못하여 오류발생
>>> a='''py
...
...
... thon'''
>>> a
'py\n\n\nthon'
>>> print(a)
py
thon
>>> a="python"
>>> a*3
'pythonpythonpython'
>>> head="Python"
>>> tail=" is fun!"
>>> head+tail
'Python is fun!'
>>> a="Python is too fun"
>>> a[3]
'h'
>>> a[-1]
'n'
>>> a[0:6] #인덱스 0~5까지 출력
'Python'
>>> a[:9]
'Python is'
>>> a[4:]
'on is too fun'
>>> a="20210628Sunny"
>>> year=a[0:4]
>>> day=a[4:8]
>>> weather=a[8:]
>>> year
'2021'
>>> day
'0628'
>>> weather
'Sunny'
문자열 포매팅 : 문자열 안의 특정한 값을 바꿔야 할 경우가 있을 때 이것을 가능하게 해주는 것
>>> "I eat %d apples." %3
'I eat 3 apples.'
>>> "I eat %s apples," %"five"
'I eat five apples,'
>>> number=3
>>> "I eat %d apples," %number
'I eat 3 apples,'
format 함수를 사용한 포매팅
>>> "I eat %d apples." %3
'I eat 3 apples.'
>>> "I eat %s apples," %"five"
'I eat five apples,'
>>> number=3
>>> "I eat %d apples," %number
'I eat 3 apples,'
>>> "I eat {} apples.".format(3)
'I eat 3 apples.'
>>> "I eat {} apples and {}oranges.".format(3,5)
'I eat 3 apples and 5oranges.'
>>> "I eat {} apples.".format("five")
'I eat five apples.'
>>> number=3
>>> "I eat {} apples".format(number)
'I eat 3 apples'
문자열 관련 함수
-문자 개수 세기(count)
>>> a="python"
>>> a.count('y')
1
>>> a="aabbccc"
>>> a.count('c')
3
-위치 알려주기(find)
>>> a="python is fun"
>>> a.find('n') #n이 처음으로 나온 위치를 알려줌
5
>>> a.find('e') #문자열 안에 존재하지 않으면 -1 반환
-1
-위치 알려주기(index)
>>> a="python is too fun"
>>> a.index('t') #t가 처음으로 나온 위치를 알려줌
2
>>> a.index('z') #없는 문자열이 나오면 오류
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
-문자열 삽입
>>> ",".join('abcd')
'a,b,c,d'
>>> ",".join(['a','b','c','d'])
'a,b,c,d'
-대/소문자 바꾸기
>>> a.upper()
'ABCD'
>>> a="ABCD"
>>> a.lower()
'abcd'
-공백지우기
>>> a=" hi "
>>> a
' hi '
>>> a.lstrip() #왼쪽 공백 지우기
'hi '
>>> a.rstrip() #오른쪽 공백 지우기
' hi'
>>> a.strip() #외쪽,오른쪽 공백 모두 지우기
'hi'
-문자열 바꾸기
>>> a="Python is too fun"
>>> a.replace('Python','Java')
'Java is too fun'
-문자열 나누기
>>> a="python is too fun"
>>> a.split() #공백을 기준으로 문자열 나누기
['python', 'is', 'too', 'fun']
>>> a="a:b:c:d"
>>> a.split(':') #':'를 기준으로 문자열 나누기
['a', 'b', 'c', 'd']
리스트
-리스트 인덱싱
>>> a=[1,2,3]
>>> a[1]
2
>>> a=[1,2,3,4,5]
>>> a[0]
1
>>> a[-2] #뒤에서 2번째 요솟값 출력
4
>>> a=[1,2,4,[3,5]]
>>> a[3][1]
5
>>> a=[1,2,['a','b',['Life','is']]]
>>> a[2][2][0]
'Life'
- 리스트 슬라이싱
>>> a=[1,2,3,4,5]
>>> a[0:2] #a[0]~a[1]까지
[1, 2]
>>> a[:3] #처음부터 a[2]까지
[1, 2, 3]
>>> a[3:] #a[3]부터 끝까지
[4, 5]
>>> a=[1,2,3,['a','b','c'],4,5]
>>> a[2:5] #a[2]~a[4]까지
[3, ['a', 'b', 'c'], 4]
>>> a[3][:2] #a[3] 리스트에서 처음부터 2번째 원소까지
['a', 'b']
-리스트 연산하기
>>> a=[1,2,3,4]
>>> b=[5,6,7,8]
>>> a+b
[1, 2, 3, 4, 5, 6, 7, 8]
>>> a-b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'list' and 'list'
>>> a*3
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
>>> len(a) #리스트의 길이 구하기
4
-리스트 연산 오류
>>> a=[1,2,3]
>>> a[2]+'hi'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> str(a[2])+'hi'
'3hi'
▶오류나는 이유? 형 오류(TypeError), 즉 정수와 문자열을 더할 수 없다.
-리스트의 수정과 삭제
>>> a=[1,2,3,4]
>>> a[2]=8
>>> a
[1, 2, 8, 4]
>>> a=[1,2,3,4]
>>> del a[1]
>>> a
[1, 3, 4]
>>> a=[1,2,3,4,5]
>>> del a[2:]
>>> a
[1, 2]
<리스트 함수>
-리스트에 요소 추가(append)
>>> a=[1,2,3,4]
>>> a.append(7) #리스트의 마지막 요소로 추가
>>> a
[1, 2, 3, 4, 7]
>>> a.append([5,6]) #리스트에 리스트 추가 하기,리스트는 어떤 자료형도 추가 가능
>>> a
[1, 2, 3, 4, 7, [5, 6]]
-리스트 정렬(sort) & 뒤집기(reverse)
>>> a=[2,5,4,7,9,19]
>>> a.sort() #리스트의 요소를 순서대로 정렬
>>> a
[2, 4, 5, 7, 9, 19]
>>> a=['apple','car','banna'] #알파벳도 정렬 가능
>>> a.sort()
>>> a
['apple', 'banna', 'car']
>>> a.reverse()
>>> a
[19, 9, 7, 5, 4, 2]
-위치 반환(index)
>>> a=[1,2,3,4]
>>> a.index(3) #리스트에서 3의 위치
2
>>> a.index(1) #리스트에서 1의 위치
0
-리스트에 요소 삽입(insert)
>>> a=[1,2,3,4]
>>> a.insert(0,5) #a[0]에 5 삽입
>>> a
[5, 1, 2, 3, 4]
>>> a.insert(3,7) #a[3]에 7삽입
>>> a
[5, 1, 2, 7, 3, 4]
-리스트 요소 제거(remove)
>>> a=[1,2,3,1,2,3]
>>> a.remove(3)
>>> a
[1, 2, 1, 2, 3]
>>> a.remove(3)
>>> a
[1, 2, 1, 2]
-리스트 요소 끄집어내기(pop)
>>> a=[1,2,3]
>>> a.pop() #리스트의 맨 마지막 요소를 도려주고 삭제
3
>>> a
[1, 2]
>>> a.pop() #리스트의 맨 마지막 요소를 도려주고 삭제
2
>>> a
[1]
>>> a=[1,2,3,4,5]
>>> a.pop(3) #리스트의 인덱스3 요소 돌려주고 삭제
4
>>> a
[1, 2, 3, 5]
>>> a.pop(2) #리스트의 인덱스2 요소 돌려주고 삭제
3
>>> a
[1, 2, 5]
-리스트에 포함된 요소 개수 세기(count)
>>> a=[1,2,3,1,1,2,4,5,4]
>>> a.count(1)
3
<튜플>
리스트와 다른 점
-리스트는 [], 튜플은 ()
-리스트는 그 값의 생성,삭제,수정이 가능하지만 튜플은 그 값을 바꿀 수 없다.
>>> a=(1,2,3,4,5)
>>> a
(1, 2, 3, 4, 5)
>>> a[1]
2
>>> a[3]
4
>>> del.a[3] #튜플은 삭제 불가능
File "<stdin>", line 1
del.a[3]
^
SyntaxError: invalid syntax
>>> a[0]=7 #튜플은 변경 불가능
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
-덕셔너리
#왼쪽이 Key // 오른쪽이 Value
#딕셔너리는 Key값 기준
>>> a={'name':'hj','age':'26','birth':'0111'} #딕셔너리 생성
>>> a
{'name': 'hj', 'age': '26', 'birth': '0111'}
>>> a['name'] #딕셔너리에 접근은 Key값으로 가능
'hj'
>>> a['age']
'26'
>>> a['hj'] #딕셔너리에 접근은 Value값으로는 불가능
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'hj'
>>> a['phone']='01049409849' #추가
>>> a
{'name': 'hj', 'age': '26', 'birth': '0111', 'phone': '010'}
>>> a['name']='mm' #Value 값 변경 가능
>>> a
{'name': 'mm', 'age': '26', 'birth': '0111', 'phone': '010'}
>>> del a['name'] #삭제 가능
>>> a
{'age': '26', 'birth': '0111', 'phone': '010'}
>>> a.keys() #딕셔너리의 Key값만 모아서 dict_Keys객체로 돌려준다.
dict_keys(['age', 'birth', 'phone'])
>>> a.values() #딕셔너리의 Value값만 모아서 dict_Values객체로 돌려준다.
dict_values(['26', '0111', '010'])
>>> a.items() #Key와 Value의 쌍을 튜플로 묶은 값을 dict_items객체로 돌려준다.
dict_items([('age', '26'), ('birth', '0111'), ('phone', '010')])
>>> 'age' in a #key 값이 a 있는지 확인 가능
True
>>> '26' in a #딕셔너리는 무조건 key값 기준!value 값이 있는지는 확인 불가능
False
>>> 'birth' in a
True
>>> a.clear() #모든 쌍 지우기
>>> a
<집합 자료형>
#집합 자료형은 중복을 허용하지 않는다.
#순서가 없다.즉, 리스트나 튜플은 순서가 있어서 인덱싱을 통해 자료형을 얻을 수 있지만
set 자료형은 순서가 없어 인덱싱으로 값을 얻을 수 없다.
>>> a=set([1,2,3,1,1,1])
>>> a
{1, 2, 3}
>>> a=set('hello world!')
>>> a
{'h', 'w', 'e', '!', 'r', 'l', 'd', 'o', ' '}
>>> a=set([1,2,3,4,5,6])
>>> b=set([4,5,6,7,8,9])
>>> a&b #a와 b 교집합
{4, 5, 6}
>>> a|b #a와 b 합집합
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> a-b #a와 b 차집합
{1, 2, 3}
>>> a.add(8) #a에 8 추가
>>> a
{1, 2, 3, 4, 5, 6, 8}
>>> a.update([9,10,11]) #여러개의 값 추가
>>> a
{1, 2, 3, 4, 5, 6, 8, 9, 10, 11}
>>> a.remove(10) #제거, del 로는 제거 불가능!!순서가 없기 때문에
>>> a
{1, 2, 3, 4, 5, 6, 8, 9, 11}
<bool 자료형 : 참과 거짓>
>>> 2>1
True
>>> 1>3
False
>>> #비어있으면 False
>>> bool(5)
True
>>> bool(-5)
True
>>> bool(0)
False
>>> bool('')
False
>>> bool('t')
True
>>> bool([3])
True
>>> a=3
>>> b=5
>>> print(a,b)
3 5
>>> a,b=b,a #a,b 값 바꾸기
>>> print(a,b)
5 3
#RAM 16G,8G
>>> a=5
>>> b=a #용량이 작으면 제대로 복사가 되어
>>> b=3 #b의 값을 변경했을 때 a는 그대로 있고 b의 값만 변경이 가능
>>> b
3
>>> a
5
>>> a=[1,2,3,4,5] #10G
>>> b=a #복사하면서 20G,용량이 커지면 복사가 제대로 되지않고 a리스트와 b리스트를 동일하게 본다.
>>> b[1]=10
>>> b
[1, 10, 3, 4, 5]
>>> a
[1, 10, 3, 4, 5]
#이 문제점 해결 방법!
#제대로 복사 되려면
>>> a=[1,2,3,4,5]
>>> b=a[:] #제대로 복사
>>> b
[1, 2, 3, 4, 5]
>>> b[1]=10
>>> b
[1, 10, 3, 4, 5]
>>> a
[1, 2, 3, 4, 5]
#퀴즈1:주민번호 뒷 자리만 출력하기
>>> a='881120-1068234'
>>> print(a[7:])
1068234
>>> a.split('-')[1]
'1068234'
#퀴즈2: ':' 를 '#' 로 바꾸기
>>> a='a:b:c:d'
>>> a.replace(':','#')
'a#b#c#d'
#퀴즈3: [1,3,5,4,2] 를 내림차순으로 정렬
>>> a=[1,3,5,4,2]
>>> a.sort()
>>> a.reverse()
>>> a
[5, 4, 3, 2, 1]
#퀴즈4:리스트 요소 한문장으로 만들기
>>> a=['Life','is','too','short']
>>> ' '.join(a)
'Life is too short'
#퀴즈5:중복제거해서 출력하기
>>> a=[1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,5,5,5,5]
>>> set(a)
{1, 2, 3, 4, 5}
>>> list(set(a))
[1, 2, 3, 4, 5]
<if문>
>>> #if 조건:
>>>
>>> money=True
>>> if money==True:
... print('taxi')
... else:
... print('walk')
...
taxi
>>> money=2000
>>>
>>> if money>=3000:
... print('taxi')
... else:
... print('walk')
...
walk
>>> money=2000
>>> card=True
>>>
>>> if money>=3000 or card==True:
... print('taxi')
... else:
... print('walk')
...
taxi
>>> pocket=['paper','cellphone','money']
>>>
>>> if 'money' in pocket:
... print('taxi')
... else:
... print('walk')
...
taxi
>>> pocket=['paper','cellphone','money']
>>> card=True
>>> if 'money' in pocket:
... print('taxi')
... elif card==True:
... print('taxi')
... else:
... print('walk')
...
taxi
>>> score=60
>>> message='GOOD' if score>=60 else 'BAD'
>>>
>>> message
'GOOD'
>>>
>>>
>>> card=True
>>> if card==True:
... print('GOOD')
...
GOOD
<반복문 : while문 & for 문>
#while : 조건이 틀릴때까지 무한반복
#for : 순서가 있는 유한반복
>>> hit=0
>>>
>>> while hit<10:
... hit+=1
... print('나무를 {}번 찍었습니다.'.format(hit))
... if hit==10:
... print("나무가 쓰러집니다.")
...
나무를 1번 찍었습니다.
나무를 2번 찍었습니다.
나무를 3번 찍었습니다.
나무를 4번 찍었습니다.
나무를 5번 찍었습니다.
나무를 6번 찍었습니다.
나무를 7번 찍었습니다.
나무를 8번 찍었습니다.
나무를 9번 찍었습니다.
나무를 10번 찍었습니다.
나무가 쓰러집니다.
>>> coffee=10
>>>
>>> while True:
... coffee-=1
... print('커피 한잔 팔고,{}잔 남았습니다.'.format(coffee))
... if coffee==0:
... print('커피를 모두 팔았습니다.')
... break #실행중지
...
커피 한잔 팔고,9잔 남았습니다.
커피 한잔 팔고,8잔 남았습니다.
커피 한잔 팔고,7잔 남았습니다.
커피 한잔 팔고,6잔 남았습니다.
커피 한잔 팔고,5잔 남았습니다.
커피 한잔 팔고,4잔 남았습니다.
커피 한잔 팔고,3잔 남았습니다.
커피 한잔 팔고,2잔 남았습니다.
커피 한잔 팔고,1잔 남았습니다.
커피 한잔 팔고,0잔 남았습니다.
커피를 모두 팔았습니다.
>>> a=0
>>> while a<10: #여기로 돌아가기
... a+=1
... if a%2==0:
... continue #조건 만족하면
... print(a)
...
1
3
5
7
9
#퀴즈1: while문을 사용하여 1~1000까지 3의 배수의합을 구해보시오 . 정답: 166833
>>> a=0
>>> b=0
>>>
>>> while a<1000:
... a+=1
... if a%3==0:
... b+=a
...
>>> b
166833
>>> #For : 순서가 있는 유한반복
>>>
>>> box=['ONE','TWO','THREE']
>>>
>>> for i in box: #박스 안에 있는 것을 순서대로 i에 넣는다.
... print(i)
...
ONE
TWO
THREE
>>> students=[90,25,75,45,100]
>>> num=0
>>>
>>> for i in students:
... num+=1
... if i>60:
... print('{}번 학생 합격-- {}점'.format(num,i))
...
1번 학생 합격-- 90점
3번 학생 합격-- 75점
5번 학생 합격-- 100점
#for문으로 1~100 더하기
>>> a=0
>>> for i in range(1,101):
... a+=i
...
>>> a
5050
#구구단
>>> for i in range(2,10):
... for j in range(1,10):
... print('{}*{}={}'.format(i,j,i*j)) #한줄씩 나오는 이유: print('{}*{}={}'.format(i,j,i*j),end='\n'),end='\n'숨어있음.
...
2*1=2
2*2=4
2*3=6
2*4=8
.
.
.
.
9*6=54
9*7=63
9*8=72
9*9=81
#퀴즈1: 빈 리스트에 for 문을 이용하여 [1,2,3,4,5]넣기
>>> box=[]
>>> for i in range(0,5):
... box.append(i+1)
...
>>> box
[1, 2, 3, 4, 5]
>>> for i in range(1,11,1): #3번째는 증감 크기,안쓰면 기본값이 1
... print(i)
...
1
2
3
4
5
6
7
8
9
10
>>> for i in range(1,11,3): #1부터 10까지 3씩 증가
... print(i)
...
1
4
7
10
>>> for i in range(10,0,-3):
... print(i)
...
10
7
4
1
#for i in [리스트] or for i in range(범위)
#퀴즈1 : box에 [1,2,3,4,5]
>>> box=[]
>>>
>>> i=0
>>> for i in range(1,6):
... box.append(i)
...
>>> box
[1, 2, 3, 4, 5]
>>> box=[]
>>> box=[i for i in range(1,6)]
>>> box
[1, 2, 3, 4, 5]
>>> box=[i for i in range(1,11) if i%2==0] #리스트에 for문 과 if문을 넣을 수 있다.
>>> box
[2, 4, 6, 8, 10]
#퀴즈2:
*****
****
***
**
*
출력하기
>>> for i in range(5,0,-1):
... print('*'*i)
...
*****
****
***
**
*
<함수>
>>> def intro(name,age,sex=True):
... print('나의 이름은 {}입니다.'.format(name))
... print('나의 나이는 {}입니다.'.format(age))
... if sex==True:
... print('나는 여자입니다.')
... else:
... print('나는 남자입니다.')
...
>>> intro('hj','26',True)
나의 이름은 hj입니다.
나의 나이는 26입니다.
나는 여자입니다.
#함수, 클래스
>>> def test():
... a=5 #지역변수
...
>>> a=0 #전역변수
>>> test()
>>> a #a의 값이 5로 변하지 않은 이유:test 함수의 a는 지역 변수이기 때문에
0
#a를 5로 바꾸기 위한 방법 : global
>>> def test():
... global a
... a=5
...
>>> a=0
>>> test()
>>> a
5
#재귀함수 : 함수 안에서 같은 함수를 불러오는 것
>>> def fac(n): #팩토리얼 함수
... a=1
... for i in range(1,n+1):
... a*=i
... return a
...
>>> fac(5)
120
>>> def fac(n): #팩토리얼 함수2
... if n==1:
... return 1
... else:
... return n*fac(n-1)
...
>>> fac(5)
120
#피보나치 수열 : 앞에 있는 두 수를 더하는 것
#1 1 2 3 5 8 1 21...
>>> def pivo(n):
... if n==1 or n==2:
... return 1
... else:
... return pivo(n-1)+pivo(n-2)
...
>>> pivo(5)
5
>>> pivo(6)
8
<입력함수:input>
>>> a=input()
python
>>> a
'python'
>>> a=input('값을 입력하시오:') #숫자를 입력해도 문자열로 인식
값을 입력하시오:23
>>> a
'23'
>>> a=int(input('값을 입력하시오:')) #숫자로 인식
값을 입력하시오:23
>>> a
23
<클래스>
>>> class Bank:
... def deposit(self,a):
... self.money=a
...
>>> person1=Bank() #클래스 사용권한 허용
>>> person1.deposit(30000)
>>> person1.money
30000
>>> person2=Bank() #클래스 사용권한 허용
>>> person2.deposit(10000)
>>> person2.money
10000
'Python > 파이썬으로 배우는 머신러닝 기초 교육' 카테고리의 다른 글
3일차(데이터 가공) (0) | 2021.07.23 |
---|---|
2일차(데이터 크롤링3) (0) | 2021.07.20 |
2일차(데이터 크롤링2) (0) | 2021.07.19 |
2일차(데이터 크롤링) (0) | 2021.07.15 |
2일차(파이썬 기초) (0) | 2021.07.15 |