for문 응용

gyeorrr·2023년 1월 19일
0

예전에 풀었었던 문제를 for문을 이용해서 풀어보려고한다.

문제

최대 3개의 화물을 적재할 수 있는 엘레베이터가 있다
각 화물의 무게를 순서대로 입력 받아서
화물 무게의 합계를 소수점 둘째자리까지 출력하고,
최대 무게를 초과한다면 '초과' 라고 출력하고
초과하지 않는다면 '정상' 이라고 출력하는 코드를 작성하세요

단, 화물의 무게는 실수로 입력 받아야 하고
엘레베이터의 최대 적재량은 600kg 이다

문제의 키워드
● 최대 3개의 화물 ( for문의 range 적용)
● 최대 무게 600kg (기준)
● 출력 : 초과 or 정상
● 소수점 둘째자리까지 출력 (:.2f)

기존의 풀이

# 1) 변수 선언 및 입력

maxweight = 600
box1 = float (input('첫번째 화물 무게 입력 (kg): '))  #실수로 입력 받아야할 때 float
box2 = float (input('두번째 화물 무게 입력 (kg): '))  
box3 = float (input('세번째 화물 무게 입력 (kg): '))  

# 2) 연산 및 결과 만들기 (제어문)

totalweight = box1 + box2 + box3
if totalweight > maxweight :
    result = '초과'

if totalweight <= maxweight : 
    result = '정상'
    
# 3) 출력

form = '모든 화물의 무게 : {:.2f}kg, 상태 : {}'
print (form.format(totalweight,result))
  1. 변수 선언 후 input 을 이용해서 세 화물의 변수선언 및 값을 받기
  2. 세 화물의 총합을 변수선언으로 받기
  3. if 문을 이용해서 조건부여
  4. 출력
    장점 : 가독성이 좋다
    단점 : 받고자 하는 입력값(input) 양이 많아지면 변수선언으로 해줘야할 것이 너무 많아진다
    box1 = input . . . box248 = input ( 요런느낌 )

for문을 이용한 문제풀이

total = 0
sumlist = []
for i in range(1,4):
     muge = float(input(f'{i}번 화물의 무게를 입력하세요 :'))
     sumlist.append(muge)
for i in sumlist:
    total += i
if total > 600:
    result = '초과'
else: result = '정상'

form = '모든 화물의 무게 : {:.2f}, 상태 : {}'
print(f'각 화물의 무게 :{sumlist}')
print (form.format(total,result))

total = 0 총 합을 저장할 변수선언
sumlist = [ ] 각 무게를 담을 리스트
for i in range(1,4): 몇개의 화물을 입력 받을건지 범위지정
muge = float(input( f ' { i }번의 화물의 무게를 입력하세요 :')) input 으로 받는 값을 muge에 저장
sumlist.append(muge) muge에 저장된 값을 sumlist에 저장(append)

for i in sumlist: sumlist에 있는 데이터를 반복한다
total += i total에 각 데이터를 누적으로 합산한다
if total > 600: total의 값이 600보다 크다면?
result 초과
else : 아니라면 정상

그후 출력

장점 : 데이터가 많아져도 범위만 지정하면 얼마든지 쓸 수 있는 변수
단점 : 가독성이 조금 떨어지는 것 같고 , 데이터가 적다면 굳이 쓸 필요 없을 것 같다

내가 응용해보려고 만들어보았음

0개의 댓글