# 문자열 함수
-function,method
# split(): split strings
coffee_menu_str = "에스프레소,아메리카노,카페라테,카푸치노"
coffee_menu_str.split(',')
"에스프레소,아메리카노,카페라테,카푸치노".split(',')
"에스프레소 아메리카노 카페라테 카푸치노".split(' ')
"에스프레소.아메리카노.카페라테.카푸치노".split('.')
phone_number = '+82-10-2345-6789'
# +82만 추출하기
result = phone_number.split('-')
result = phone_number.split('10-2345-6789')
result
## strip() : 필요없는 문자열 삭제
- 앞뒤 공백 혹은 개행문자와 같이 불필요한 부분을 지우고 싶을 때 사용
tempText = ' Python '
tempText.strip()
tempText = 'aaaaaPythonaaaaaa'
tempText.strip('a')
tempText = 'aaaaaPythonaaaaaa'
tempText[5:11]
tempText = 'aaaaabbPythonbbaaaaaa'
tempText[7:13]
tempText = 'aaaaabbPythonbbaaaaaa'
result = tempText.strip('a')
result.strip('b')
tempText.strip('ab')
tempText = '\n Python \n\n'
print(tempText.rstrip('\n'))
print(tempText.lstrip('\n'))
## join(): 문자열 연결
- 더하기 연산자(+)로 두 문자열을 연결 가능
name1 = '철수'
name2 = '영미'
hello = '안녕'
print(name1 + hello)
print(name2 + hello)
address_list = ['서울시', '서초구', '반포대로', '201(반포동)']
a = '.'
a.join(address_list)
".".join(address_list)
## find() : 문자열 찾기
- 문자열의 위치 값을 반환
str_f = 'Python code'
print(str_f.find('o'))
print(str_f.find('c'))
print(str_f.find('x'))
## count() : 찾고자 하는 문자열의 횟수 반환
- 만약, 찾을 문자열이 없으면 0으로 반환
str_a = "더 높이 더 빨리 더 멀리"
print(str_a.startswith("더"))
print(str_a.startswith("몼또"))
print(str_a.endswith("멀리"))
print(str_a.endswith("토오쿠"))
## replace() : 문자열 바꾸기
- 지정한 문자열을 찾아서 바꾸는 메서드
str_a = "더 높이 더 빨리 더 멀리"
str_a.replace(('더'),('존나'))
str_a = "더 높이 더 빨리 더 멀리"
str_a1 = str_a.replace(('더'),(''))
str_a2 = str_a1.replace(('높이'),(''))
str_a3 = str_a2.replace(('빨리'),(''))
str_a4 = str_a3.replace(('멀리'),(''))
print(str_a)
print(str_a1)
print(str_a2)
print(str_a3)
print(str_a4)
## append()
- 리스트에서 항목 하나를 맨 마지막에 추가
## insert()
- 항목의 위치를 나타내는 인덱스 i에 data를 삽입.
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
myFriends.append('Thomas')
result.insert(1,'evan')
result
ex_list = ["a", "b", "c", "d"] # -1 => given position, 3번째 인덱스값을 참조
ex_list.insert(-1, "e") # append("e")
print(ex_list)
print(["a", "b", "c", "d", "e"])
## extend()
- 리스트에서 항목 여러 개를 맨 마지막에 추가
myFriends = ['James', 'evan', 'Robert', 'Lisa', 'Mary', 'Thomas']
newFriends = ['A', 'B', 'C']
# myFriends.append(newFriends)
myFriends.extend(newFriends)
myFriends
myFriends = ['James', 'evan', 'Robert', 'Lisa', 'Mary', 'Thomas','A', 'B', 'C']
newFriends = ['d', 'e', 'f', ]
myFriends.append(newFriends)#append 는 항목하나라서 def 한개로 취급
#myFriends.extend(newFriends)
myFriends
##**함수**
- 뺄셈 함수를 만들어보세요
+ 함수명 : mySubtract
def mySubtract(a, b): # 무조건 a, b가 입력이 되어야 함. 필수 조건
c = a - b
return c
a = 2
b = 1
result = mySubtract(a, b)
print(result)
def mySubtract(a, b=0): # b의 초깃값으로 0으로 설정 b = None
c = a - b
return c
x = 10
z = 100
result = mySubtract(x, z) # b가 0 => 100으로 변경
print(result)
def my_func():
print("My first function")
print("This is a function!")
my_func()
def mySum(a, b = 4):
c = a + b
print(f'함수 잘 작동 중? {c}')
a = 4
result = mySum(a)
print(result)
(f'함수 잘 작동 중? {c}')는 Python의 f-string을 사용한 문자열 포맷팅입니다.
f-string은 파이썬 3.6 버전부터 도입된 문자열 포맷팅 방법 중 하나로, 문자열 내에서 중괄호 {} 안에 변수나 표현식을 넣어 해당 값을 문자열로 대체하는 기능을 제공합니다.
여기서 '함수 잘 작동 중? {c}'는 문자열이고, 중괄호 {} 안에 있는 c는 변수입니다. f-string을 사용하여 {c}의 부분은 변수 c의 값으로 치환됩니다.
예를 들어, 코드에서 c = a + b로 초기화되고 있는데, 이때 f'함수 잘 작동 중? {c}'가 실행될 때 {c}는 해당 코드에서 c에 할당된 값을 문자열로 대체합니다.
따라서 실제로 프로그램이 실행될 때 '함수 잘 작동 중? ' 뒤에 c 값이 문자열로 변환되어 이어지게 됩니다. 만약 c의 값이 14라면 이 부분은 '함수 잘 작동 중? 14'와 같은 형태로 출력될 것입니다.
### 변수의 유효범위
- p121
- 지역 변수 & 전역 변수
- Local Variable & Global Variable
a = 5 # 전역 변수
def func1():
a = 1 # 지역 변수
print(f'func1 지역 변수 a = {a}')
func1()
print(f'전역 변수 a = {a}')
a = 50
def func1():
a = 40
print(f'여기서만 40 = {a}')
func1()
(f'여기서만 40 = {a}')
a = 5 # 전역 변수
def func1():
a = 1 # 지역 변수
print(f'func1 지역 변수 a = {a}')
def func2():
a = 4 # 지역 변수
print(f'func2 지역 변수 a = {a}')
def func3():
print(f'func3 전역 변수 a = {a}')
def func4():
global a # 함수 내 에서 전역 변수를 변경하기 위함
a = 500
print(f'func4 전역 변수 a = {a}')
func1()
func2()
func3()
func4() # 500이 이해 완료
print(f'전역 변수 a = {a}') # 여기도 500이 나오더라 이것이 포인트
func3()
func2()
func1()
### 람다 함수
- `def` 함수 같은 경우에는 복잡한 함수 로직을 만들 때 주로 사용
- 단순 기능을 수행 할 때, lambda 함수
+ 함수를 한줄로 처리
(lambda x : x **2)(3)
mySquare = lambda x : x ** 2
mySquare(5)
def myPower(x):
y = x ** 2
print(y)
# return y
myPower(3)
## 클래스 선언과 객체 생성
- 함수의 확장
+함수 : 각 덧셈함수, 뺄셈함수 곰셈함수
+클래스 : 사칙연산 클래스 (예: 계산기)
+라이브러리 : 클래스들의 묶음
# 자전거의 속성 : data
# 자전거의 동작 : method (=function)
class Bycycle(): # 클래스 선언
# 클래스 변수
데이터1 = 바퀴의 크기
데이터2 = 자전거의 색상
# 클래스 메서드
def 속도():
pass
def 방향():
pass
def 정지():
pass
def 비행():
pass
객체명 = Bycycle(데이터1, 데이터2) # 입력한 형태로 새로운 객체가 막 생기는 것
# 상상
벤츠자전거 = Bycycle(데이터1, 데이터2) # 매장 옵션
# 문의
벤츠자전거 하늘로 비행하나요? ==> 얘는 기능 미 존재
계산기 만들기
result = 10
def s(num):
global result
result= result - num
return result
print (s(5))
print (s(3))
- 계산기가 1대 더 필요한 상태
result1 = 0
def s1(num):
global result1
result1= result1 + num
return result1
result2 = 0
def s2(num):
global result2
result2= result2 + num
return result2
print(s1(3))
print(s1(5))
print(s2(3))
print(s2(8))
- 위 코드의 문제점 : 같은 기능(덧셈)을 수행하는 함수가 중복될 수 있음 / 코드의 가독성이 매우 급격하게 떨어지기 시작
- 점프 투 파이썬 클래스 예제
class Calculator:
def __init__(self):
self.result = 0
class Calculator:
def __init__(self):
self.result = 0
def d(self, num):
self.result = self.result + num
return self.result
print(cal1.d(5))
print(cal1.d(5))
class Calculator:
def __init__(self):
self.result = 0
def add(self, num):
self.result = self.result + num
return self.result
cal3 = Calculator() <-1회 계산 뒤에 지우고 셀실행시 cal 의 계산식이 중복으로 덧셈 위에서 값을 초기화 하기 떄문
print(cal3.add(100))
class Bicyle():
# 변수 초기화
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))
class Car:
def __init__(self, speed, model):
self.speed = speed
self.model = model
def stop(self):
print('고속도로({0}, {1}) : 정지'.format(self.speed, self.model))
my_car = Car(100, 'gc')
ur_car = Car(80, 'vl')
my_car.stop()
ur_car.stop()
class Car:
def stop(self):
print('고속도로 : 정지')
# 객체 생성
my_car = Car()
ur_car = Car()
# 객체에 속성 추가
my_car.speed = 100
my_car.model = '3.8'
ur_car.speed = 80
ur_car.model = '2000'
# stop() 메서드 호출 및 속성 출력
my_car.stop() # 출력: 고속도로 : 정지
print(f"my_car의 속성 - 속도: {my_car.speed}, 모델: {my_car.model}")
ur_car.stop() # 출력: 고속도로 : 정지
print(f"ur_car의 속성 - 속도: {ur_car.speed}, 모델: {ur_car.model}")
'복습' 카테고리의 다른 글
loc 와 iloc의 차이 (1) | 2024.01.05 |
---|---|
240103복습 (0) | 2024.01.03 |
231229 복습 (1) | 2023.12.30 |
변수의 형태 chat gpt (0) | 2023.12.30 |
231227 학습내용 (0) | 2023.12.28 |