실습1 | 제어문 (FOR & IF) 과 시퀀스(LIST & DICTIONARY &STRING) 문제풀이

2024. 12. 16. 19:23·PYTHON

☑️문제1) 짝수 판별하기 

[문제]

  • 변수 n 을 가지고 짝수인지 홀수인지 0인지 출력하는 파이썬 코드를 만드세요.
  • n = 3, n= 2, n= 0 인 케이스 모두 3가지를 채점할 예정입니다.

[문제 해결]

  • 조건문 사용하여 출력
  • if n ==0 일때 , elif 2 로나눈 나머지가 0일때(짝수 조건) ,else (홀수 조건) 출력 
  • REMIND) `IF`절은 깔때기 형으로 필터링 됨. (IF 조건 만족시 수행 , IF 조건 불만족 시 ELIF 조건으로 수행, ELIF 도 불만족시 ELSE 수행 )
if n==0:
    print("이 숫자는 0입니다")
elif n%2==0:
    print("이 숫자는 짝수 입니다")
else:
    print("이 숫자는 홀수 입니다")

☑️문제2) 제품 재고 관리 

[문제]

  • 주어진 제품의 재고 데이터를 확인하여, 재고의 상태를 나타내는 파이썬 코드를 만드세요.
  • inventory_list = [90, 60, 80] , value=80 
# 예상 출력값
'''
현재 기준 값은 80% 입니다.
1 번째 아이템 재고는 90% 로 과잉입니다.
2 번째 아이템 재고는 60% 로 부족합니다.
3 번째 아이템 재고는 80% 로 적절합니다.
'''

[문제 해결]

  • 인덱스 출력 법에 따른, 방법1) `.INDEX 메소드` 
    • inventory_list 리스트 값 순회 하면서 value 값이랑 비교 후 조건별 출력 
    • 리스트의 값과 인덱스 필요 : 리스트의 `값`은 for 문 & 리스트의 인덱스는 index 메소드 활용, 인덱스는 [0] 부터 시작이므로 +1 해줌.  
    • 시퀀스타입.index ('값') : 시퀀스의 '값'의 인덱스 반환해주는 메소드   
inventory_list=[90,60,80]
value=80

print(f'현재 기준 값은 {value}% 입니다.')

for i in inventory_list:
    if i > value: #재고가 많을때 
        print(f'{inventory_list.index(i)+1}번째 아이템 재고는 {i}% 로 과잉입니다.')
    elif i <value: #재고가 적을때
        print(f'{inventory_list.index(i)+1}번째 아이템 재고는 {i}% 로 부족합니다.')
    else: #재고가 같을때
        print(f'{inventory_list.index(i)+1}번째 아이템 재고는 {i}% 로 적절합니다.')
  • 인덱스 출력 법에 따른 방법2) `enumerate` 함수
    • 리스트에 enumerate 함수 사용하여 인덱스 반환
    • enumerate  함수 : 인덱스  반환 함수 (주로 인덱스가 없는 딕셔너리에서 활용됨) 
방법1) 
for i,inventory in enumerate(inventory_list): # 인덱스 i 에 저장, inventory에 값 저장 
    if inventory > value:
        print(f'{i+1} 번째 아이템 재고는 {inventory}%로 과잉입니다.')
    elif inventory < value:
        print(f'{i+1} 번째 아이템 재고는 {inventory}%로 부족합니다.')
    else:
        print(f'{i+1} 번째 아이템 재고는 {inventory}%로 적절합니다.')
     
 방법2)
# 공통으로 출력해야하는 문장 제외 message 저장 후 한번에 출력 
for i,inventory in enumerate(inventory_list):
  if inventory < value:
    message = "% 로 부족합니다"
  elif inventory > value:
    message = "% 로 과잉입니다"
  else:
    message = "% 로 적절합니다"
  print( f'{i+1}번째 아이템 재고는 {inventory} {message}')
  • 인덱스 출력 법에 따른 방법3) `range(len(리스트))` 함수 사용
    • range (리스트 길이) 로 for 문 돌리면서 inventory_list[i] → 값 , i → 인덱스 
for i in range(len(inventory_list)): # for * range 문 (len 사용하여, 값/인덱스 모두 출력)
    if inventory_list[i] == value:
        print(f'{i+1}번째 아이템 재고는 {inventory_list[i]}% 로 과잉입니다.')
    elif inventory_list[i] < value: # 
        print(f'{i+1}번째 아이템 재고는 {inventory_list[i]}% 로 부족입니다.')
    else:
         print(f'{i+1}번째 아이템 재고는 {inventory_list[i]}% 로 적절합니다.')

☑️문제3) 제품 재고 관리2

[문제]

  • maintain_inventory 함수는 재고품목과 재고비율을 전달하여 재고 관리를 도와주는 함수입니다.
  • 존재하는 재고 품목이면 재고비율을 갱신합니다. 기존 품목을 업데이트했다고 알립니다.
  • 존재하지 않는 재고품목이면 새롭게 만들고 재고비율을 할당합니다. 새로운 재고가 들어왔다고 알립니다.
  • 모든 재고품목과 재고비율을 출력합니다.
  • inventory_dict={'Apple':90, 'Banana': 60, 'Orange': 80}
# 1. 기존 값 업데이트
maintain_inventory(inventory_dict, 'Apple', 50)
'''
기존 품목 or 새로운 품목 Apple을 업데이트합니다.
현재 Apple 재고는 50% 있습니다.
현재 Banana 재고는 60% 있습니다.
현재 Orange 재고는 80% 있습니다.

[문제 해결]

  • 방법1) `.items` 메소드
  • 주어진 품목이 딕셔너리에 있는지 확인 후 조건별 key,value 값 출력  
  • ▼ for 문에서 .items() 메서드 사용 및 호출 시, 
더보기
  • items : 튜플형 쌍으로 출력
  • items[0] : 첫번째 컬럼, 인덱스[0]만 출력 
  • item[:] : 튜플형 쌍으로 출력
  • keys() : key만 출력 
  • value() : value 만 출력 
inventory_dict={'Apple':90, 'Banana': 60, 'Orange': 80}

def maintain_inventory(data_dict,item,update):
    if item in data_dict: #키값만 확인 가능 # if item in inventory_dict.keys() 가능
        data_dict[item]=update
        print(f'기존 품목 {item}을 업데이트합니다.')
        for key,value in data_dict.items(): 
            print(f'현재 {key} 재고는 {value}%있습니다.')
    else:
        data_dict[item]=update
        print(f'새로운 품목 {item}이 입고 되었습니다.')
        for key,value in data_dict.items():
            print(f'현재 {key} 재고는 {value}%있습니다.')

maintain_inventory(inventory_dict, 'Apple', 50)
print("""""")
maintain_inventory(inventory_dict, 'Melon', 40)
  • 방법2) `.items` 메소드 + for 문/코드 중복 제거
  •  위에 코드에서 if/else 수행문안에 중복되는 `data_dict[item]=update` `for문~` if 조건문 밖으로 빼주면서 불필요한 코드 반복 제거
def maintain_inventory(data_dict, item, update):
    if item in data_dict:
        print(f"기존 품목 {item}을 업데이트 합니다.")
    else:
        print(f"새로운 품목 {item}이 입고되었습니다.")
        
    data_dict[item] = update
    for key, value in data_dict.items():
        print(f"현재 {key}의 재고는 {value}% 있습니다.")

 

'PYTHON' 카테고리의 다른 글

실습3 | 이상치 검사하기 ( IQR 기반/ numpy 라이브러리)  (0) 2024.12.16
실습2 | 이메일 유효성 검사(split,endswith,find) / 포인트 적립및 차감하기(CLASS) 문제풀이  (0) 2024.12.16
코테 준비 | 프로그래머스 x만큼 간격이 있는 n개의 숫자 / 없는 숫자 더하기  (0) 2024.12.16
코테 준비 | 프로그래머스 조건문 & 반복문 문제 풀이  (0) 2024.12.11
파이썬 | 함수(def)와 변수, 인수, 매개변수  (1) 2024.12.11
'PYTHON' 카테고리의 다른 글
  • 실습3 | 이상치 검사하기 ( IQR 기반/ numpy 라이브러리)
  • 실습2 | 이메일 유효성 검사(split,endswith,find) / 포인트 적립및 차감하기(CLASS) 문제풀이
  • 코테 준비 | 프로그래머스 x만큼 간격이 있는 n개의 숫자 / 없는 숫자 더하기
  • 코테 준비 | 프로그래머스 조건문 & 반복문 문제 풀이
성장하는 쿠키의 로그 기록
성장하는 쿠키의 로그 기록
성장하는 쿠키의 모든 로그를 담습니다.
  • 성장하는 쿠키의 로그 기록
    쿠키 로그
    성장하는 쿠키의 로그 기록
  • 전체
    오늘
    어제
    • 분류 전체보기 (143)
      • TODAY I LEARNED (2)
      • 데이터 분석 (13)
      • SQL (49)
      • PYTHON (39)
      • 통계,검정,머신러닝 (22)
      • TABLEAU (5)
      • 내배캠 | 데이터분석 부트캠프 (12)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SQL
    코테준비
    MySQL
    오블완
    데이터분석가
    데이터분석
    티스토리챌린지
    Wil
    pandas
    코딩테스트준비
    파이썬
    sql코딩테스트
    프로그래머스
    태블로
    데이터리안
    Python
    해커랭크
    데이터분석프로젝트
    머신러닝
    내배캠
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
성장하는 쿠키의 로그 기록
실습1 | 제어문 (FOR & IF) 과 시퀀스(LIST & DICTIONARY &STRING) 문제풀이
상단으로

티스토리툴바