Программа, которая сообщает стоимость предметов, которые я возвращаю

#python

Вопрос:

Эта программа работает неправильно, она не выдает мне значение первой введенной бутылки и неправильно суммирует значение. Я пытался понять, в чем проблема, но не могу ее понять.

 def main():
    CAN = 0
    GLASS_BOTTLE = 1
    PLASTIC_SMALL = 2
    PLASTIC_NORMAL = 3
    PLASTIC_BIG = 4
    NO_DEPOSIT_BOTTLE = 5
    CAN_DEPOSIT = 15  # cents
    GLASS_BOTTLE_DEPOSIT = 10  # cents
    PLASTIC_SMALL_DEPOSIT = 10  # cents
    PLASTIC_NORMAL_DEPOSIT = 20  # cents
    PLASTIC_BIG_DEPOSIT = 40  # cents

    print("Welcome to the bottle recycling.")
    print("Bottle types with the corresponding numbers:")
    print("Can: 0")
    print("Glass bottle: 1")
    print("Plastic bottle (0.33l): 2")
    print("Plastic bottle(0.5l): 3")
    print("Plastic bottle (1.5l): 4")
    print("No deposit bottle: 5")
    bottle = int(input("Enter the type of the first bottle. Stop with a negative number:n"))
    c=0
    sum = 0
    while bottle >= 0:
        sum=sum   c
        bottle = int(input("Enter the type of the next bottle. Stop with a negative number:n"))
        if 0:
            c = 15
        elif 1:
            c = 10
        elif 2:
            c = 10
        elif 3:
            c = 20
        elif 4:
            c = 40

    e = sum//100


    while sum > 100:
        sum-100

    print("You got", e, "u20ac and",sum,"cents from the bottles")
main()
 

Комментарии:

1. if 0 должно быть if bottle == 0 , и то же самое для всех остальных if утверждений.

2. Вы также никогда ничего не делаете с первой бутылкой.

3. Применяйте условия с переменной бутылкой

4. @Бармар, я это вижу. Как бы мне нужно было изменить код, чтобы подсчитать также первую бутылку? Раньше я занимался только C, так что python для меня в новинку

5. Логика та же, что и в C. Вы могли бы поместить if блоки в начале while цикла, а не после того, как он попросит следующую бутылку.

Ответ №1:

Как уже говорилось, проблема в состоянии. Первое условие всегда будет Ложным.

 bool(0) == False
 

но второе всегда будет Верным

 bool(1) == True
 

условие должно проверять стоимость бутылки, поэтому

 if bottle == 0:
 

и так далее

Кроме этого, пожалуйста, не используйте sum в качестве имени переменной, это встроенная функция