파이썬 기초: if문 활용 예제

kevinkim2586·2020년 4월 11일
0

Python

목록 보기
2/4
post-thumbnail

오늘 또 다른 문제를 풀었는데, if문을 참 많이 사용하는 문제였다.

문제는 아래와 같다:

대강 이런 식으로 출력이 되어야 한다. USB 용량은 위와 같고, 메모리 타입도 여러가지이다. 배송료는 3만원 이상이면 무료이고 그 미만이면 3000이 추가되어야 한다.

문제를 읽고, 아 정말 if문이 많이 들어가는 코드겠구나라는 생각이 들었다.

일단 문제를 보고, 대강 손코딩으로 문제를 한 번 풀어봤다. 아래 필기에 적혀 있는 코드와 최종 실행 가능한 코드는 같지 않다. 그냥 코드를 컴퓨터에 작성하기 전에 한 번 브레인스토밍 겸? 써봤다.

(악필은 언제나 양해 바란다)

최종 코드는 아래에 작성해두었다.

usb_Memory=int(input("USB 메모리 용량(GB)을 입력하세요(128,64,32,16): "))
usb_MemoryType=input("USB 메모리 타입을 입력하세요(slide,cap,rotate): ")
usb_Amount=int(input("USB 메모리 개수를 입력하세요: "))

if usb_Memory==128:
    totalAmount=45000
    if usb_MemoryType=='slide':
        totalAmount=totalAmount+2000
    elif usb_MemoryType=='cap':
        totalAmount=totalAmount+1000
    print("USB 하나의 가격은 %d" % totalAmount)
    totalAmount=totalAmount * usb_Amount
    print("전체 USB 금액: %d" % totalAmount)
    if totalAmount>=30000:
        deliveryFee=0
        print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount))
    else:
        deliveryFee=0
        deliveryFee=deliveryFee+3000
        print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount+deliveryFee))

elif usb_Memory==64:
    totalAmount=32000
    if usb_MemoryType=='slide':
        totalAmount=totalAmount+2000
    elif usb_MemoryType=='cap':
        totalAmount=totalAmount+1000
    print("USB 하나의 가격은 %d" % totalAmount)
    totalAmount=totalAmount * usb_Amount
    print("전체 USB 금액: %d" % totalAmount)
    if totalAmount>=30000:
        deliveryFee=0
        print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount))
    else:
        deliveryFee=0
        deliveryFee=deliveryFee+3000
        print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount+deliveryFee))

elif usb_Memory==32:
    totalAmount=16000
    if usb_MemoryType=='slide':
        totalAmount=totalAmount+2000
    elif usb_MemoryType=='cap':
        totalAmount=totalAmount+1000
    print("USB 하나의 가격은 %d" % totalAmount)
    totalAmount=totalAmount * usb_Amount
    print("전체 USB 금액: %d" % totalAmount)
    if totalAmount>=30000:
        deliveryFee=0
        print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount))
    else:
        deliveryFee=0
        deliveryFee=deliveryFee+3000
        print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount+deliveryFee))

elif usb_Memory==16:
    totalAmount=8000
    if usb_MemoryType=='slide':
        totalAmount=totalAmount+2000
    elif usb_MemoryType=='cap':
        totalAmount=totalAmount+1000
    print("USB 하나의 가격은 %d" % totalAmount)
    totalAmount=totalAmount * usb_Amount
    print("전체 USB 금액: %d" % totalAmount)
    if totalAmount>=30000:
        deliveryFee=0
        print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount))
    else:
        deliveryFee=0
        deliveryFee=deliveryFee+3000
        print("배송료: %d 전체 지불 금액: %d" % (deliveryFee, totalAmount+deliveryFee))

코드를 다시 보니 뭔가 굉장히 비효율적으로 보인다. 이렇게 하지 않아도 뭔가 더 효율적이고, 더 짧게 작성하는 방안이 있을 것만 같다. 혹시나 있다면 댓글로 누가 알려주기 바란다. 아직 초보라 지적,조언 댓글은 언제나 환영하는 마음이다.

profile
공개적으로 학습하고자 만든 블로그

0개의 댓글