카테고리 없음

2주차 TIL - 반복문과의 숨막히는 대결

게임취업하고싶은 사람 2024. 12. 26. 18:28

 

 

 

이런 내용의 파이썬 활용 문제가 제시되었다

나는 두 눈을 의심하며 "이런 조건으로 어떻게 코딩을 하라고?" 라며

머리를 쥐어짰다 "믿을 수 없다, 이게 초보자가 할 수준이야?"

하지만 해보기로 마음 먹었다..비록 에러로 포위섬멸을 몇번 당했지만

 

해당 코드도 사실상 빈칸 채우기 느낌의 문제이다,
앞서 배운 for 반복문과 if함수를 적절히 버무리면
뭔가 나오지 않을까 싶어 닥치는 대로 집어넣어봤다.

 

# 전체 품목 데이터 (품목명: 중량(g))
factory_products = {
    "Sausage_A": 90,
    "Sausage_B": 120,
    "Sausage_C": 110,
    "Sausage_D": 115,
    "Sausage_E": 98,
    "Sausage_F": 70,
    "Sausage_G": 101
}   #이부분을 딕셔너리라고 한다

# HACCP 검사를 받은 품목 리스트
haccp_tested = ["Sausage_A", "Sausage_B", "Sausage_D"]

# 중량 기준 (g)
weight_standard = 100      #이건 필수 조건

# HACCP 미검사 품목 리스트 반환
def untested(factory_products, haccp_tested):
    untested_products = []
    for product in factory_products:
        if product not in haccp_tested:
            untested_products.append(product)
    return untested_products

# 중량 미달 품목의 갯수 반환
def underweight(factory_products):
    untested_products = untested(factory_products, haccp_tested)
    count = 0
    for product in untested_products:
        if factory_products[product] < weight_standard:
            count += 1
    return count

# 함수 호출 및 결과 출력
print("HACCP 미검사 품목 리스트:", untested(factory_products, haccp_tested))
print("중량 미달 품목 갯수:", underweight(factory_products))

 

HACCP 미검사 품목 리스트: ['Sausage_C', 'Sausage_E', 'Sausage_F', 'Sausage_G']
중량 미달 품목 갯수: 2

 

이렇게 코딩을 마치면 정상적으로 미달 품목 갯수 까지 확인이 가능하다

 

그럼 len함수와 리스트 컴프리헨션 까지 써보면 어떻게 나올까?
데이터가 줄어들까? 아니면 셀 한줄이 겁나게 길어질까? 라며
어줍짢게 생각을 해보고...
syn 에러가 계속 뜨는것도 무시하고 닥치는대로 변환해보았다

 

# 전체 품목 데이터 (품목명: 중량(g))
factory_products = {
    "Sausage_A": 90,
    "Sausage_B": 120,
    "Sausage_C": 110,
    "Sausage_D": 115,
    "Sausage_E": 98,
    "Sausage_F": 70,
    "Sausage_G": 101
}

# HACCP 검사를 받은 품목 리스트
haccp_tested = ["Sausage_A", "Sausage_B", "Sausage_D"]

# 중량 기준 (g)
weight_standard = 100

# HACCP 미검사 품목 리스트 반환
def untested(factory_products, haccp_tested):
    return [product for product in factory_products if product not in haccp_tested]

# 중량 미달 품목의 갯수 반환
def underweight(factory_products):
    untested_products = untested(factory_products, haccp_tested)
    return len([product for product in untested_products if factory_products[product] < weight_standard]) 
#해당 값에 리턴 앞에 len 함수를 통해
for in 반복문으로 []안에 넣고 딕셔너리를 리스트로 보고 리스트 컴프리헨션을 시도했다



# 함수 호출 및 결과 출력
print("HACCP 미검사 품목 리스트:", untested(factory_products, haccp_tested))
print("중량 미달 품목 갯수:", underweight(factory_products))

 

과연.....

 

 

HACCP 미검사 품목 리스트: ['Sausage_C', 'Sausage_E', 'Sausage_F', 'Sausage_G']

중량 미달 품목 갯수: 2

 

^리스트 컴프리헨션을 사용하여 조금 더 Pythonic한 코딩이 된 것 같다