학교 정보 수행평가에 도움이 필요합니다.

조회수 539회
//drink = [['밀키스', 1000,'원'],['토레타', 1200,'원'],['복숭아녹차', 1500,'원'],['환타', 1000,'원']]

while True:
    want=input('밀키스, 토레타, 복숭아녹차, 환타가 있습니다. 원하는 음료를 골라주세요. : ')
    for i in drink:
        if want==i[0]:
            print(i[1],'원이 필요합니다.')
            while True:
                ask=input('돈을 넣으시겠습니까? y/n ->')
                if ask=='y'or ask=='Y':
                    money=int(input('얼마를 넣으시겠습니까? ->'))
                    if money<int(i[1]):
                        ask=input('돈이 부족합니다. 더 넣으시겠습니까? y/n ->')
                        if ask=='y'or ask=='Y':
                            continue
                        elif ask=='n'or ask=='N':
                            break
                    elif money>=int(i[1]):
                        print('거스름돈은', money-i[1], '원 입니다.')
                        ask=input('계속 마시겠습니까? y/n ->')
                        if ask=='y'or ask=='Y':
                            break
                        elif ask=='n'or ask=='N':
                            break
                        else:
                            print('y 혹은 n만 입력해주세요.')
                            break
                elif ask=='n'or ask=='N':
                    break
                else:
                    print('y 혹은 n만 입력해주세요.')
            break
        elif want!=i[0]:
            ask=input('목록에서만 골라주세요. 음료를 마시겠습니까? y/n ->')
            if ask=='y' or ask=='Y':
                break
            elif ask=='n' or ask=='N':
                break
    if ask=='n'or ask=='N':
        break

학교 수행평가로 프로그램 하나를 짜야합니다. 그래서 음료수 자판기 프로그램을 짜봤습니다. 음료에 밀키스를 입력했을 경우 다 잘 되는데, 나머지 음료들을 입력하면 '목록에서만 골라주세요. 음료를 마시겠습니까? y/n ->' 이 부분이 다시 반복됩니다. 계속 만져봤는데

//elif want!=i[0]:
            ask=input('목록에서만 골라주세요. 음료를 마시겠습니까? y/n ->')
            if ask=='y' or ask=='Y':
                break
            elif ask=='n' or ask=='N':
                break

이걸 집어넣으니까 위에게 반복되는 것 같습니다. 뭐가 문제인걸까요? 이걸 빼기엔 음료 이름에 다른걸 입력하면 오류가 떠서 곤란합니다. 어떻게 해야할까요?

  • 제 생각엔 if want == drink로 체크를 해서 음료수를 찾아야 되는데 거기에 for문을 추가하셔서 그런 것 같네요. for문으로 0으로 시작하니 밀키스 이외에는 안꺼내지는게 당연한것 같구요 BillTime 2022.10.28 09:42

1 답변

  • 자, 지금 짠 코드가 제대로 작동하지 않는 이유는 다음과 같기 때문입니다.

    drink = [['밀키스', 1000,'원'],['토레타', 1200,'원'],['복숭아녹차', 1500,'원'],['환타', 1000,'원']]
    
    for i in drink:
        print(i[0])
        if i[0] != '토레타':
            print('에러!')
            break
    

    여기서 문제는 뭘까요?

    제일 먼저 해야 하는 작업은 음료수 이름이 일치하는지 확인하는게 아니라, 음료수 이름이 제공하는 리스트에 있는지를 확인해야겠죠.

    그리고 그 방법은, 음료수 이름이 들어있는지 확인하는 것도 있을 것이고, 음료수 이름에 대한 값을 호출하는 것도 있을 겁니다. 어떤 방식을 쓰던, 본인 마음대로 쓰면 됩니다.

    ※ y, n은 upper나 lower을 쓰는게 좀 더 간결합니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)