이코드를 if~elif 문 없이 간단하게 만드려면 어떻게해야할까요?


cabbage = 5000
daikon = 2000
lettuce = 3000
pepper = 4000
cucumber = 1000

total = [0,0,0,0,0]

print("1.배추")
print("2.무")
print("3.상추")
print("4.고추")
print("5.오이")
print("select item(1~5)")

MAX_BUY = 2
for i in range(0,MAX_BUY):
    goodsldx = int(input("제품: "))
    goodsldx2 = int(input("몇개: "))

    if goodsldx == 1 and goodsldx2 == 1:
        value = ((cabbage * goodsldx2) - (cabbage * goodsldx2) * 0.25) + total[0]
        total[0] = value
    elif goodsldx == 1 and goodsldx2 >= 2:
        value = ((cabbage * goodsldx2) - (cabbage * goodsldx2) * 0.50) + total[0]
        total[0] = value

    if goodsldx == 2 and goodsldx2 == 1:
        value = ((daikon * goodsldx2) - (daikon * goodsldx2) * 0.20) + total[1]
        total[1] = value
    elif goodsldx == 2 and goodsldx2 >= 2:
        value = ((daikon * goodsldx2) - (daikon * goodsldx2) * 0.40) + total[1]
        total[1] = value

    # 아래부터 if~elif 붙여넣어서 숫자만 함수 변경

MAX_GOODS = 5
goodsName = ['cabbage', 'daikon', 'ltettue', 'pepper', 'cucumber' ]
for j in range(0,MAX_GOODS):
    print(goodsName[j], '=', total[j])

1~5값을 조건문으로 1번인지 2번인지 추려낸 후 조건식으로 넣다보니 코드 줄도 길어지고 가독성? 뭔가 이렇게 만들면 안될듯하게 만들어지는데...결과값은 정확하게 나옵니다.

이코드에서 조건문 부분을 간단하게? 하는 법이 있을까요??


조회수 145


1 답변


좋아요
1
싫어요
채택취소하기

인덱스 관련된 if문을 없에는덴 배열이 쉽게 쓰입니다.

prices = [0, 5000, 2000, 3000, 4000, 1000]    
rates = [0, 0.25, 0.20, ...]    
...    
totalPrice = prices[goodsldx] * goodsldx2    
discount = rates[goodsldx] * min(goodsldx2, 2)    
total[goodsldx - 1] += totalPrice - (totalPrice * discount)    

테스트는 안해봤지만 이런 방법으로 가능할 것 같습니다.

  • 2018년 02월 10일에 작성됨
    AI, Game, Simulation 코드작성을 좋아합니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close