deda
Deda의 데이터 디자인
deda
전체 방문자
오늘
어제
  • 분류 전체보기 (121)
    • Python (27)
      • Python 기초 (17)
      • Python 데이터분석 (10)
    • SQL (9)
    • Coding test (54)
      • Python 기초문제 (45)
      • LeetCode (9)
    • BigData (2)
    • ZeroBase (3)
    • UX (0)
    • Business Review (1)
    • 통계 & 수학 (17)
      • 통계학 (14)
      • 수학 (3)
    • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 계차수열
  • 데이터사이언티스트
  • 마이데이터
  • 미니콘다
  • 최소공배수
  • 파이썬
  • 모듈
  • 등차수열
  • 데이터분석가
  • 소인수분해
  • 군수열
  • 빅데이터
  • 등비수열
  • 함수
  • matplotlib
  • BMI
  • 릿코드
  • 팩토리얼
  • 계산기
  • 프로그래밍
  • 제로베이스
  • 데이터분석
  • pandas
  • SQL
  • 기초수학
  • 부트캠프
  • 코딩
  • 네카라쿠배
  • 통계
  • 데이터엔지니어

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
deda

Deda의 데이터 디자인

[while 반복문] 거스름돈 계산기
Coding test/Python 기초문제

[while 반복문] 거스름돈 계산기

2022. 4. 16. 23:10

1. 문제

상품 가격을 입력하고 지불금액을 입력하면 거스름돈 출력.

 

2. 사용함수

.isdigit() : 숫자면 True, 아니면 False

flag = True -> break를 하지않는 이상 영원히 반복

 

3. 실행

price = input('상품가격 입력:')
if price.isdigit():
    money = input('지불금액 입력:')

    if money.isdigit():
        restMoney = (int(money) - int(price))//10 * 10

        print('거스름돈:', restMoney, "(원단위 절사)")

        flag = True
        cnt50000 = 0
        cnt10000 = 0
        cnt5000 = 0
        cnt1000 = 0
        cnt500 = 0
        cnt100 = 0
        cnt50 = 0
        cnt10 = 0

        while flag:
            if restMoney >= 50000:
                restMoney = restMoney - 50000
                cnt50000 += 1

            elif restMoney >= 10000:
                restMoney = restMoney - 10000
                cnt10000 += 1

            elif restMoney > 5000:
                restMoney = restMoney - 5000
                cnt5000 += 1

            elif restMoney >= 1000:
                restMoney = restMoney - 1000
                cnt1000 += 1

            elif restMoney >= 500:
                restMoney = restMoney - 500
                cnt500 += 1

            elif restMoney >= 100:
                restMoney = restMoney - 100
                cnt100 += 1

            elif restMoney >= 50:
                restMoney = restMoney - 50
                cnt50 += 1

            elif restMoney >= 10:
                restMoney = restMoney - 10
                cnt10 += 1


            else:
                break

        print("-" * 30)

        print("50,000 {}장".format(cnt50000))
        print("10,000 {}장".format(cnt10000))
        print("5,000 {}장".format(cnt5000))
        print("1,000 {}장".format(cnt1000))
        print("500 {}개".format(cnt500))
        print("100 {}개".format(cnt100))
        print("10 {}개".format(cnt10))

        print("-" * 30)

    else:
        print('잘못입력했습니다.')

else:
    print('잘못입력했습니다.')

 

4. 결과물

상품가격 입력:20000
지불금액 입력:124500
거스름돈: 104500 (원단위 절사)
------------------------------
50,000 2장
10,000 0장
5,000 0장
1,000 4장
500 1개
100 0개
10 0개
------------------------------

 

 

cf. 몫과 나머지로 더 간단하게 나타낼 수도 있다.

price = input('상품 가격 입력:')
cnt50000 = 0
cnt10000 = 0
cnt5000 = 0
cnt1000 = 0
cnt500 = 0
cnt100 = 0
cnt50 = 0
cnt10 = 0

if price.isdigit():
    paidMoney = input('지불 금액:')

    if paidMoney.isdigit() and int(paidMoney) >= int(price):
        changeMoney = int(paidMoney) - int(price)
        changeMoney = (changeMoney // 10)*10
        print('거스름돈: {}(원단위절사)'.format(changeMoney))

        if changeMoney >= 50000:
            cnt50000 = changeMoney // 50000
            changeMoney = changeMoney % 50000

        if changeMoney >= 10000:
            cnt10000 = changeMoney // 10000
            changeMoney = changeMoney % 10000

        if changeMoney >= 5000:
            cnt5000 = changeMoney // 5000
            changeMoney = changeMoney % 5000

        if changeMoney >= 1000:
            cnt1000 = changeMoney // 1000
            changeMoney = changeMoney % 1000

        if changeMoney >= 500:
            cnt500 = changeMoney // 500
            changeMoney = changeMoney % 500

        if changeMoney >= 100:
            cnt100 = changeMoney // 100
            changeMoney = changeMoney % 100

        if changeMoney >= 50:
            cnt50 = changeMoney // 50
            changeMoney = changeMoney % 50

        if changeMoney >= 10:
            cnt10 = changeMoney // 10
            changeMoney = changeMoney % 10

        print('-'*30)
        print('50,000 {}장'.format(cnt50000))
        print('10,000 {}장'.format(cnt10000))
        print('5,000 {}장'.format(cnt5000))
        print('1,000 {}장'.format(cnt1000))
        print('500 {}개'.format(cnt500))
        print('100 {}개'.format(cnt100))
        print('50 {}개'.format(cnt50))
        print('10 {}개'.format(cnt10))
        print('-'*30)

    else:
        print('금액이 부족합니다')

else:
    print('잘못 입력하였습니다.')​

 

 

'Coding test > Python 기초문제' 카테고리의 다른 글

[for 반복문] 합, 짝수합, 홀수합, 팩토리얼 구하기  (0) 2022.04.27
[%, // 연산자] 빵과 우유 배분하기  (0) 2022.04.17
[for 반복문] 복리 계산기  (0) 2022.04.17
[if/elif 조건문] 성적표 출력하기  (1) 2022.04.16
[if~else 조건문] 100살 계산기  (0) 2022.04.16
    'Coding test/Python 기초문제' 카테고리의 다른 글
    • [%, // 연산자] 빵과 우유 배분하기
    • [for 반복문] 복리 계산기
    • [if/elif 조건문] 성적표 출력하기
    • [if~else 조건문] 100살 계산기
    deda
    deda
    데이터 분석 / 파이썬 / UX / 정량리서치

    티스토리툴바