멀티캠퍼스 1주차 -2

2023. 12. 28. 17:48Data Science/Study 자료

27일 리뷰

  • int, float, str,bool
  • 리스트 튜플

문자열 함수

  • 교재(p.158)
  • 영어 : function, method

split() : 문자열 분리

In [1]:
coffee_menu_str = "에스프레소,아메리카노,카페라테,카푸치노" coffee_menu_str.split(',') #리스트로 나눔 #반환값, Return 자료형 확인 필수
Out[1]:
['에스프레소', '아메리카노', '카페라테', '카푸치노']
In [2]:
"에스프레소,아메리카노,카페라테,카푸치노".split(',')#.split('')안의 문자나 공백으로 값들을 나눈다
Out[2]:
['에스프레소', '아메리카노', '카페라테', '카푸치노']
In [3]:
"에스프레소 아메리카노 카페라테 카푸치노".split(' ') #반환값이 리스트임
Out[3]:
['에스프레소', '아메리카노', '카페라테', '카푸치노']
In [4]:
phone_number = "+82-01-2345-6789" phone_number[:3] #+82만 추출하기
Out[4]:
'+82'
In [7]:
result = phone_number.split('-')
In [8]:
result[0]
Out[8]:
'+82'
In [9]:
#max split, 매개변수(parameters) phone_number.split('-',maxsplit = 1) # 하나만 빼야할떄 유용
Out[9]:
['+82', '01-2345-6789']
In [10]:
phone_number.split('-',maxsplit = 2)
Out[10]:
['+82', '01', '2345-6789']

strip() : 필요없는 문자열 삭제

  • 앞뒤 공백 혹은 개행문자와 같이 불필요한 부분을 지우고 싶을 때 사용
In [12]:
tempText = ' python ' tempText.strip() #공백을 없앰
Out[12]:
'python'
In [19]:
tempText = 'aaaPythonaaa'
In [20]:
tempText[3:9] #슬라이싱을 이용 가능하나 이용범위가 넓지않음
Out[20]:
'Python'
In [21]:
tempText.strip('a')
Out[21]:
'Python'
In [22]:
tempText = 'aaaaabbPythonbbaaaaaa' tempText.strip('ab') #한번에 할 수도 있음
Out[22]:
'Python'
In [28]:
tempText = '\n Python \n\n'
In [29]:
tempText.strip('\n')
Out[29]:
' Python '
In [30]:
tempText.strip(' \n')
Out[30]:
'Python'
In [31]:
#lstrip() : 해당 텍스트의 왼쪽 #rstrip() : 해당 텍스트의 오른쪽

join() : 문자열 연결

  • 더하기 연산자(+)로 두 문자열을 연결 가능
In [32]:
name1 = '철수' name2 = '영미' hello = '님, 주소와 전화 번호를 입력해 주세요' print(name1 + hello)
철수님, 주소와 전화 번호를 입력해 주세요
In [35]:
address_list = ['서울시', '서초구', '반포대로', '201(반포동)'] # 리스트의 각 값을 모두 연결해서 하나의 텍스트로 a = '-' #' '안의 값으로 이어줌 a.join(address_list) # '-'.join 이런식으로 써도됨
Out[35]:
'서울시-서초구-반포대로-201(반포동)'

find() : 문자열 찾기

  • 문자열의 위치를 값을 반환
In [40]:
str_f = 'Python code.' print("찾는 문자열의 위치:", str_f.find('o')) print("찾는 문자열의 위치:", str_f.find('Java')) # -1 해당되는 문자 없음
찾는 문자열의 위치: 4
찾는 문자열의 위치: -1

count() : 찾고자 하는 문자열의 횟수 반환

  • 만약 찾을 문자열이 없으면 0으로 반환
In [42]:
str_c = "Python is powerful. Python is easy to learn. Python is open."
In [46]:
print('python의 갯수는?', str_c.count('Python')) print('python의 갯수는?', str_c.count('java'))
python의 갯수는? 3
python의 갯수는? 0

startswith, endswith

  • 각 문자열이 지정된 문자로 시작하는지 또는 끝나는지 체크(검사)할떄 사용
In [49]:
str_c = "Python is powerful. Python is easy to learn. Python is open."
In [52]:
print('Python으로 시작?', str_c.startswith('Python'))
Python으로 시작? True

replace() : 문자열 바꾸기

  • 지정한 문자열을 찾아서 바꾸는 메서드
 
In [53]:
str_a = 'Python is fast. Python is friendly. Python is open.' print(str_a.replace('Python', 'Ipython')) #Python을 Ipython으로
Ipython is fast. Ipython is friendly. Ipython is open.
In [58]:
str_b = '[Python][is][fast]' str_b1 = str_b.replace('[','') str_b2 = str_b1.replace(']',' ') result = str_b2.rstrip() #맨뒤 공백을 지우기 위해 사용 print(result)
Python is fast

리스트 함수

  • 교재(p.54)
  • 처음 프로그래밍 공부할 때
    • 1차 교재확인
    • 프로젝트 진행 시 ==> 공식문서에 친숙 (너무 많아서 찾는게 좋음)
    • 라이브러리 사용 할 때, 공식문서를 보는 훈련을 계속 키워야 함

append()*

  • 리스트에서 항목 하나를 맨 마지막에 추가
  • 별도로 변수 저장 할 필요 없음
In [60]:
myFriends = ['James', 'Robert', 'Lisa', 'Mary'] myFriends.append('Thomas') #새로운 변수 값에 저장하여 쓸수 없음 print(myFriends)
['James', 'Robert', 'Lisa', 'Mary', 'Thomas']

extend()

  • 리스트에서 항목 여러 개를 맨 마지막에 추가
In [62]:
myFriends = ['James', 'Robert', 'Lisa', 'Mary'] myFriends.append('Thomas') newFriends = ['A' , 'B', 'C'] myFriends.extend(newFriends) myFriends
Out[62]:
['James', 'Robert', 'Lisa', 'Mary', 'Thomas', 'A', 'B', 'C']

insert()

  • 항목의 위치를 나타내는 인덱스 i에 data를 삽입
In [64]:
myFriends = ['James', 'Robert', 'Lisa', 'Mary'] myFriends.insert(1, 'Evan') #(인덱스, 원하는데이터) print(myFriends)
['James', 'Evan', 'Robert', 'Lisa', 'Mary']

오전 수업 리뷰

  • 다양한 함수를 사용
  • string, list 관련된 주요 메서드

-각 메서드명, 매개변수에 대해 처음 접함

  • 주의 / 확인 : 함수를 실행 후, 반환값, Return값을 확인해야 함
  • 코드를 암기하려고 하지 말고, 공식문서를 보는 방법에 대해 익힘
  • 코드 암기는 빅데이터 분석기사 or 코딩 테스트 대비할때 외움

클래스

함수

  • 다른 개발자 분들이 만들어 놓은 함수를 갖다 씀
  • 함수를 직접 만들자!
    • 의미있는 함수를 만드는 것이 프로젝트
  • 프로그래밍을 한다 ==> 재실행할거다, 재실행 또는 반복 실행을 하기 위한 방법론: 함수
    • 반복적인 일을 해야 한다는 느낌을 받을 떄 함수를 만들면 됨
In [ ]:
#함수의 구조 #매개변수 = 인자 # 116p def 함수명(인자1, 인자2, ...,인자 n): # 코드블록 return 반환값
In [66]:
def mySum(a,b): c = a+b return c a = 1 b = 1 result = mySum(a,b) print(result)
2
In [67]:
def mySubtract(a,b): c = a-b return c mySubtract(4,1)
Out[67]:
3
In [68]:
#에러를 통해서 함수의 필요 인자를 확인할 수 있음 m = 1 result = mySubtract(m) print(result)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-68-8649a8335d41> in <cell line: 3>()
      1 m = 1
      2 
----> 3 result = mySubtract(m)
      4 print(result)

TypeError: mySubtract() missing 1 required positional argument: 'b'
In [69]:
def mySubtract(a,b=0): # b의 초깃값으로 0으로 설정 또는 b = None c = a-b return c M = 1 N = 100 result = mySubtract(M, N) #b 재정의 print(result)
1
In [70]:
def my_func(): print("My first function") print("This is a function!")
In [71]:
result = mySubtract(M, N) #Return이 있는 메소드 my_func()# Return이 없는 메소드
My first function
This is a function!

변수의 유효범위

  • p121
  • 지역 변수(Local Variable) & 전역 변수(Global Variable)
In [73]:
a = 5 #전역변수 def func1(): a = 1 #지역변수 print(f'func1 지역 변수 a = {a}') func1() print(f'전역 변수 a = {a}')
func1 지역 변수 a = 1
전역 변수 a = 5
In [74]:
a = 5 #전역변수 def func1(): #a = 1 #지역변수 print(f'func1 지역 변수 a = {a}') func1() print(f'전역 변수 a = {a}')
func1 지역 변수 a = 5
전역 변수 a = 5
In [75]:
a = 5 #전역변수 def func1(): a = 1 #지역변수 print(f'func1 지역 변수 a = {a}') def func2(): a = 4 #지역변수 print(f'func2 지역 변수 a = {a}') func1() func2() print(f'전역 변수 a = {a}')
func1 지역 변수 a = 1
func2 지역 변수 a = 4
전역 변수 a = 5
In [77]:
a = 5 #전역변수 def func1(): a = 1 #지역변수 print(f'func1 지역 변수 a = {a}') def func2(): a = 4 #지역변수 print(f'func2 지역 변수 a = {a}') def func3(): print(f'func 전역 변수 a = {a}') def func4(): global a # 함수내 에서 전역변수 변경하기 위함 a = 500 print(f'func4 전역변수 a = {a}') func1() func2() func3() func4() print(f'전역 변수 a = {a}') #여기가 500이 나오는게 포인트
func1 지역 변수 a = 1
func2 지역 변수 a = 4
func 전역 변수 a = 5
func4 전역변수 a = 500
전역 변수 a = 500

람다 함수

  • def 함수 같은 경우에는 복잡한 함수 로직을 만들 때 주로 사용
  • 단순기능을 수행 할 때, 주로 lambda 함수
    • 함수를 한줄로 처리
In [78]:
(lambda x : x**2)(3) # (lambda 인자 : 인자를 활용한 코드)(원하는 인자 입력)
Out[78]:
9
In [79]:
mySquare = lambda x : x**2 mySquare(3)
Out[79]:
9

클래스 선언과 객체 생성

  • 교재 p135
  • 함수의 확장
  • 함수와 클래스 비유적 비교
    • 함수 : 덧셈함수, 뺄셈함수 등등
    • 클래스 : 사칙연산, (예: 계산기)
    • 라이브러리 : 클래스들의 묶음
In [80]:
# 자전거의 속성 : data (바퀴의 크기, 자전거의 색상) # 자전거의 동작 : method(= function), 지정된 속도로 이동, 좌/우회전, 정지 기능
In [ ]:
class Bycycle(): #클래스 선언 # 클래스 변수 데이터1 = 바퀴의 크기 데이터2 = 자전거의 색상 # 클래스 메소드 def 속도(): pass def 방향() : pass def 정지(): pass 객체명 = Bycycle(데이터1, 데이터2) #입력한 형태로 새로운 객체가 생기는것 # 파이썬은 클래스로 구성이 되어있고 제한적으로 구현이되있기 때문에 찾아야한다. ?! # 클래스안에 메소드가 존재

Why Class? 프로그래밍 관점

In [81]:
result = 0 def add(num): global result result = result + num return result print(add(3)) print(add(5))
3
8
In [ ]:
result1 = 0 def add(num): global result result = result + num return result print(add(3)) print(add(5))
In [88]:
class Calculator: def __init__(self): self.result = 0 #result값 초기화 #클래스 메서드 def add(self, num): self.result = self.result + num return self.result cal1 = Calculator() # 인스턴스화, 계산기 번호 1 cal2 = Calculator() # 인스턴스화, 계산기 번호 2 #클래스의 위대함 #독립적으로 구현이 되면서, 동시에 실행이 되고 있음 #기능은 덧셈 기능 #계산기 댓수를 무한으로 생성가능 print(cal1.add(3)) print(cal1.add(5)) print(cal2.add(6)) print(cal2.add(5))
3
8
6
11
In [89]:
print(cal1.multiple(5)) # multiple함수가 안에 없음
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-89-19106f29d3e2> in <cell line: 1>()
----> 1 print(cal1.multiple(5))

AttributeError: 'Calculator' object has no attribute 'multiple'
In [90]:
print(cal1.Add(5)) #대소문자 맞춰줘야함 #공식문서 확인
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-90-1ee02d580492> in <cell line: 1>()
----> 1 print(cal1.Add(5))

AttributeError: 'Calculator' object has no attribute 'Add'

객체 초기화

  • ' init ()' : 객체 생성과 동시에 속성값을 지정 할 수 있다.
    • 주로 클래스 선언 시 변수 초기화
In [93]:
class Bicycle(): #변수 초기화 def __init__(self, wheel_size, color): self.wheel_size = wheel_size self.color = color def stop(self): print('자전거({0},{1}) : 정지'.format(self.wheel_size, self.color))
In [97]:
my_bicycle = Bicycle(26, 'black') ur_bicycle = Bicycle(30, 'pink') my_bicycle.stop() ur_bicycle.stop()
자전거(26,black) : 정지
자전거(30,pink) : 정지