복습

231228복습

glenlee 2023. 12. 30. 01:56

# 문자열 함수
-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