Today i learned & Week i learned/파이썬 관련

내일배움캠프 데이터분석 3주차 파이썬 개인과제 [3]

데분조 2024. 1. 4. 12:45
반응형

작성 코드 및 설명

# 재고 데이터 예시
inventory_data = [
    ['Apple', 30],
    ['Banana', 20],
    ['Orange', 50]
]


# 기준 데이터 예시
standard_data = [
    ['Apple', 40],
    ['Banana', 10],
    ['Orange', 70]
]


# check_inventory 함수
def check_inventory(x,y):

	# 과잉,부족 리스트
	over_list = []
	lack_list = []
  
    # 이중 리스트 y 반복문 실행
    for a,b in y:
    
    # 이중 리스트 x의 길이 만큼 반복문 실행
    for i in range(len(x)):
      
      # 이중 리스트 x의 i번째 항목의 0번째 항목이 a와 같다면 아래 if문 실행
      if x[i][0] == a:
        
        # b가 이중 리스트 x의 i번째 항목의 1번째 항목보다 크다면 over_list에 a를 추가해라
        if b > x[i][1]:
          over_list.append(a)
        
        # b가 이중 리스트 x의 i번째 항목의 1번째 항목보다 작다면 lack_list에 a를 추가해라
        else:
          lack_list.append(a)
          
  # 과잉, 부족 리스트 출력
  print("재고 과잉 리스트", over_list)
  print("재고 부족 리스트",lack_list)
  
        

# standard_data, inventory_data를 넣어서 check_inventory 함수 실행
check_inventory(standard_data,inventory_data)

출력 결과


작성 코드 및 설명

# email_list 리스트 생성
email_list = [
    "example@example.com",
    "wrongemail@.com",
    "anotherexample.com",
    "correct@email.co.uk"
]

# validate_emails 힘수 생성
def validate_emails(x):
  
  # 리스트 x에서 반복문
  for i in x:
    
    # "@"가 i 안에 있다면 아래 if문 실행.
    if "@" in i:
      
      # i를 @로 나눴을 때 앞부분의 길이가 0보다 크다면 아래 if문 실행!
      if len(i.split("@")[0])>0:
        # i를 @로 나눴을 때 뒷부분을 변수 a에 저장!
        a = i.split("@")[1]
        
        # a를 .으로 나눴을 때 앞부분의 길이가 0보다 크다면 아래 print문 실행!
        if len(a.split(".")[0])>0:
          print(f"{i}은 유효한 이메일 주소입니다.")
        
        # a를 .으로 나눴을 때 앞부분의 길이가 0보다 크다면 아래 print문 실행!
        else:
          print(f"{i}은 유효하지 않은 이메일 주소입니다.")
      
      i를 @로 나눴을 때 앞부분의 길이가 0보다 작다면 아래 print문 실행!
      else:
        print(f"{i}은 유효하지 않은 이메일 주소입니다.")
    
    #"@"가 i 안에 없다면 아래 print문 실행.
    else:
      print(f"{i}은 유효하지 않은 이메일 주소입니다.")

# email_list를 넣어 validate_emails 힘수 실행
validate_emails(email_list)

출력 결과


작성 코드 및 설명

# 예시 데이터
participant = ["mike", "sam", "tom", "lisa","james"]
completion = ["tom", "mike", "lisa"]

#완주하지 못한 사람들 리스트
not_completion = []

# find_non_completer 함수 생성
def find_non_completer(x,y):
  
  # 리스트 x에서 반복문 실행
  for i in x:
    
    # i가 리스트 y에 없다면 
    if i not in y:
      
      # not_completion에 i추가
      not_completion.append(i)
      
  # for문이 다 실행되고 나서 print문 출력!
  print(f"완주하지 못한 사람들 {not_completion}")

# 데이터를 이용하여 함수 실행
find_non_completer(participant,completion)

출력 결과


작성 코드 및 설명

# customer 클래스 생성
class Customer():
  
  # name 변수 생성
  name = ""
  
  # email 변수 생성
  email = ""
  
  # point 변수 생성
  point = 0
  
  
  # join_customer 함수 생성
  def join_customer(self,a,b,c):
  
    # 변수 name에 a할당
    self.name = a
    
    # 변수 email에 b할당
    self.email = b
    
    # 변수 point에 c할당
    self.point = self.point + c
    
    # print문 출력
    print(f"고객명 : {self.name}, 이메일 : {self.email}, 포인트 : {self.point}")


  # add_points 함수 생성
  def add_points(self,d):
    
    # point 값에 d 더하기
    self.point = self.point + d
    
    # print문 출력
    print(f"고객명 : {self.name}, 이메일 : {self.email}, 포인트 : {self.point}") 


  # reduce_points 함수 생성
  def reduce_points(self,e):
    
    # point 값에 e 더하기
    self.point = self.point - e
    
    # point 값이 0보다 작다면 point 값은 0
    if self.point < 0:
      self.point = 0
    
    # print문 출력
    print(f"고객명 : {self.name}, 이메일 : {self.email}, 포인트 : {self.point}")


#확인코드
customer1 = Customer()
customer1.join_customer("Alice", "alice@example.com", 100)
customer1.add_points(50)
customer1.reduce_points(20)
customer1.reduce_points(150)  # 포인트 부족 상황 테스트

 

출력 결과

 

반응형