편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2019.06.16

    파이썬으로 자판기 코딩을 하는데 문제가 생겼습니다. TypeError: '<' not supported between instances of 'tuple' and 'int'


    def show_menu():
        print()
        print("[자판기 판매 메뉴]")
        for i in range(0, len(drink_menu)):
            if i%10==0:
                print()
            print("|",i+1,".",drink_menu[i],":",drink_price[i],"|",end=" ")
    
    
    def buy(num):
        if money < drink_price[num]:
            print("잔액이 부족합니다. 잔액 : %d" % money)
            return money
        else:
            print(drink_menu[num], " 구입완료")
            balance = money - drink_price[num]
            left_drink[num] = left_drink[num]-1
            print("잔액 : ", balance)
            return balance,left_drink
    
    def drink(num):
        if left_drink[num]<1:
            print("음료가 모두 소진되었습니다.")
        else:
            pass
    
    
    
    
    if __name__ == '__main__':
    
        drink_menu = ("생수","생수","생수","레몬워터","레몬워터","옥수수 수염차","옥수수 수염차", "우엉차","트레비","트레비",
                      "밀키스","펩시","핫식스","사이다","코코리치(망고)","코코리치(망고)","Lipton","트로피카나 스파클링(청사과)",
                      "트로피카나 스파클링(청사과)","트로피카나 스파클링(포도)", "가나초콜릿음료","가나초콜릿음료","레쓰비","레쓰비",
                      "칸타타","레쓰비 카페타임","게토레이","게토레이","코코팜","잔치집 식혜")
        drink_price = (600,600,600,1500,1500,1300,1300,1300,1000,1000,800,800,1000,1000,1000,1000,1000,1000,1000,1000,600,600,600,600,1000,1000,800,800,800,800)
        left_drink = [1,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]
    
    
        money = 0
        money = int(input("돈을 투입하세요 : "))
    
        while True:
            show_menu()
            sel = int(input("\n메뉴 번호를 선택하세요 (종료 : 0) : "))
            if sel == 0:
                break;
            elif (sel >= 1 and sel <= len(drink_menu)):
                money = buy(sel - 1)
            else:
                print("잘못된 메뉴 번호입니다")
    
        print("자판기 종료, 잔액 %d 반환" % money)
    
        change_money_1000 = money // 1000
        change_money_500 = (money - (change_money_1000 * 1000)) // 500
        change_money_100 = (money - (change_money_1000 * 1000) - (change_money_500 * 500)) // 100
        print("1000원 짜리:", change_money_1000, "개", "500원짜리:", change_money_500, "개", "100원짜리:", change_money_100, "개")
    

    음료를 구입할 때 left_drink의 해당 음료의 갯수를 하나 씩 줄이고 싶은데 실행을 하면

    Traceback (most recent call last):
      File "C:/Users/JES/.PyCharmCE2019.1/config/scratches/scratch_2.py", line 49, in <module>
        money = buy(sel - 1)
      File "C:/Users/JES/.PyCharmCE2019.1/config/scratches/scratch_2.py", line 11, in buy
        if money < drink_price[num]:
    TypeError: '<' not supported between instances of 'tuple' and 'int'
    

    두가지 오류가 발생합니다 튜플로 하건 리스트로 하건 오류가 발생하는데 어떻게 해결하면 좋을까요?

  • 프로필 알 수 없는 사용자님의 편집
    날짜2019.06.15

    파이썬으로 자판기 코딩을 하는데 문제가 생겼습니다.


    def show_menu():
        print()
        print("[자판기 판매 메뉴]")
        for i in range(0, len(drink_menu)):
            if i%10==0:
                print()
            print("|",i+1,".",drink_menu[i],":",drink_price[i],"|",end=" ")
    
    
    def buy(num):
        if money < drink_price[num]:
            print("잔액이 부족합니다. 잔액 : %d" % money)
            return money
        else:
            print(drink_menu[num], " 구입완료")
            balance = money - drink_price[num]
            left_drink[num] = left_drink[num]-1
            print("잔액 : ", balance)
            return balance,left_drink
    
    def drink(num):
        if left_drink[num]<1:
            print("음료가 모두 소진되었습니다.")
        else:
            pass
    
    
    
    
    if __name__ == '__main__':
    
        drink_menu = ("생수","생수","생수","레몬워터","레몬워터","옥수수 수염차","옥수수 수염차", "우엉차","트레비","트레비",
                      "밀키스","펩시","핫식스","사이다","코코리치(망고)","코코리치(망고)","Lipton","트로피카나 스파클링(청사과)",
                      "트로피카나 스파클링(청사과)","트로피카나 스파클링(포도)", "가나초콜릿음료","가나초콜릿음료","레쓰비","레쓰비",
                      "칸타타","레쓰비 카페타임","게토레이","게토레이","코코팜","잔치집 식혜")
        drink_price = (600,600,600,1500,1500,1300,1300,1300,1000,1000,800,800,1000,1000,1000,1000,1000,1000,1000,1000,600,600,600,600,1000,1000,800,800,800,800)
        left_drink = [1,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]
    
    
        money = 0
        money = int(input("돈을 투입하세요 : "))
    
        while True:
            show_menu()
            sel = int(input("\n메뉴 번호를 선택하세요 (종료 : 0) : "))
            if sel == 0:
                break;
            elif (sel >= 1 and sel <= len(drink_menu)):
                money = buy(sel - 1)
            else:
                print("잘못된 메뉴 번호입니다")
    
        print("자판기 종료, 잔액 %d 반환" % money)
    
        change_money_1000 = money // 1000
        change_money_500 = (money - (change_money_1000 * 1000)) // 500
        change_money_100 = (money - (change_money_1000 * 1000) - (change_money_500 * 500)) // 100
        print("1000원 짜리:", change_money_1000, "개", "500원짜리:", change_money_500, "개", "100원짜리:", change_money_100, "개")
    

    음료를 구입할 때 left_drink의 해당 음료의 갯수를 하나 씩 줄이고 싶은데 실행을 하면

    Traceback (most recent call last): File "C:/Users/JES/.PyCharmCE2019.1/config/scratches/scratch_2.py", line 49, in money = buy(sel - 1) File "C:/Users/JES/.PyCharmCE2019.1/config/scratches/scratch_2.py", line 11, in buy if money < drink_price[num]: TypeError: '<' not supported between instances of 'tuple' and 'int'

    두가지 오류가 발생합니다 튜플로 하건 리스트로 하건 오류가 발생하는데 어떻게 해결하면 좋을까요?