본문 바로가기
프로그램

[파이썬] 문제 : 월별 수입,지출 입력받아 소비등급 처리

by 오디세이99 2022. 11. 26.
728x90
반응형

(문제)

월별 수입과 월별 지출 금액을 각각 입력받고수입에서 지출을 뺀 잔여 금액을 기준으로 소비 등급을 매긴다.

소비 등급은 잔여 금액이 월별 수입의 30% 이상이면 1, 20% 이상이면 2등급, 10% 이상이면 3등급으로, 그외는 4등급으로 매겨진다월별 소비 등급을 리스트에 저장하여 출력하고, 소비 등급이 1급인 달을 모두 출력하라.

(, 월별 수입은 일정하게 고정되어 있다.)

 

[입력 예시1]

50000  (월별 수입)

40000  (월별 지출)

14000  (월별 지출)

22000   ...

7000

40000

18000

 

[출력 예시1]

[2, 1, 1, 1, 2, 1]  소비등급 리스트

2  2

3  3

4  ...

6

 

 

[입력 예시2]

10000

9500

10000

8000

9900

4000

9000

 

[출력 예시2]

[4, 4, 2, 4, 1, 3]

 

5

 

(방법)

문제의 조건이 어느게 수입이고 어떤게 지출인지 구분이 없어서

다음과 같이 변경했습니다.

입력 받을때 수입,지출을 동시 받음.

rank = []
while True:
    n = input('월 수입,지출(예:수입,지출) : ')
    
    if n == '':            # 공백 이볅이면 종료
        break
    
    tmp = n.split(',')      # tmp[0] = 수입, tmp[1] = 지출
    expense_p = (int(tmp[0]) - int(tmp[1])) / int(tmp[0]) * 100    # 잔액이 월별수일의 몇 % 인지 계산
    if expense_p >= 30:
        rank.append(1)
    elif expense_p < 30 and expense_p >= 20:
        rank.append(2)
    elif expense_p < 20 and expense_p >= 10:
        rank.append(3)
    else:
        rank.append(4)

    #print(tmp, (int(tmp[0]) - int(tmp[1])), expense_p, rank[-1])        # 상태를 확인하기 위한 코드. 비고(#) 처리하면 됩니다.
        
print(rank)
for i in range(len(rank)):         # 1등급 인 경우만 출력
    if rank[i] == 1:
        print(i+1)

중간의 print문으로 모니터링 한 결과

 

(추가수정)

월별 수입은 맨 처음에 한번 입력하면

나머지는 계속 동일한 월별 수입으로 가정하고 달라지는건 월별 지출

rank = []
cnt = 0
income = 0    # 수입
while True:
    cnt += 1
    n = input()
    
    if n == '':            # 공백 이볅이면 종료
        break
    
    n = int(n)
    
    if cnt == 1:
        income = n
    else:
        expense = n
        expense_p = (income - expense) / income * 100    # 잔액이 월별수일의 몇 % 인지 계산
        if expense_p >= 30:
            rank.append(1)
        elif expense_p < 30 and expense_p >= 20:
            rank.append(2)
        elif expense_p < 20 and expense_p >= 10:
            rank.append(3)
        else:
            rank.append(4)
            
        # print(tmp, (income - expense), expense_p, rank[-1])        # 상태를 확인하기 위한 코드. 비고(#) 처리하면 됩니다.
        
print(rank)
for i in range(len(rank)):         # 1등급 인 경우만 출력
    if rank[i] == 1:
        print(i+1)

 

상반기 즉 6개월로 1개 수입과 6개의 지출로 계산.

rank = []
cnt = 0
income = 0    # 수입

income = int(input())
    
for i in range(6):
    n = int(input())
    expense = n
    expense_p = (income - expense) / income * 100    # 잔액이 월별수일의 몇 % 인지 계산
    if expense_p >= 30:
        rank.append(1)
    elif expense_p < 30 and expense_p >= 20:
        rank.append(2)
    elif expense_p < 20 and expense_p >= 10:
        rank.append(3)
    else:
        rank.append(4)
            
   # print(tmp, (income - expense), expense_p, rank[-1])        # 상태를 확인하기 위한 코드. 비고(#) 처리하면 됩니다.
        
print(rank)
for i in range(len(rank)):         # 1등급 인 경우만 출력
    if rank[i] == 1:
        print(i+1)

728x90
반응형

댓글