Внешнее гнездо L oop не сработает - PullRequest
0 голосов
/ 25 февраля 2020

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

def main():
        endProgram = 'n'
        print()
        while endProgram == 'n':
            total = 0
            totalPlastic = 0
            totalMetal= 0
            totalGlass = 0
            endCount = 'n'
            while endCount == 'n':
                    print()
                    print('Enter 1 for Plastic')
                    print('Enter 2 for Metal')
                    print('Enter 3 for Glass')
                    option = int(input('Enter now: '))
                    if option == 1:
                            totalPlastic = getPlastic(totalPlastic)
                    elif option == 2:
                            totalMetal = getMetal(totalMetal)
                    elif option == 3:
                            totalGlass = getGlass(totalGlass)
                    else:
                            print('You have entered an invalid input')
                            return main()

                    endCount = input('Do you want to calculate the total? (y/n): ')
            print()
            total = calcTotal(totalPlastic, totalMetal, totalGlass)
            printNum(total)
            break

            endProgram = input('Do you want to end the program? (y/n): ')


def getPlastic(totalPlastic):
        plasticCount = int(input('Enter the number of Plastic bottles you have: '))
        totalPlastic = totalPlastic + plasticCount * .03
        return totalPlastic

def getMetal(totalMetal):
        metalCount = int(input('Enter the number of Metal cans you have: '))
        totalMetal = totalMetal + metalCount * .05
        return totalMetal

def getGlass(totalGlass):
        glassCount = int(input('Enter the number of Glass bottles you have: '))
        totalGlass = (totalGlass + glassCount * .10)
        return totalGlass

def calcTotal(totalPlastic, totalMetal, totalGlass):
        total = totalPlastic + totalMetal + totalGlass
        return total

def printNum(total):
    print('Your total recyclable value is $', total)

    main()

Моя проблема в том, что я запускаю код, и он хорошо работает на 99%. Программа запросит любой тип и сумму bottle, и она также правильно ее подсчитает, проблема в том, что внешний l oop никогда не запрашивается. После того, как он напечатает итог, он просто возвращается к вопросу о том, какой тип bottle у вас есть, вместо того, чтобы спрашивать вас, хотите ли вы завершить программу. Спасибо за любую помощь, спасибо.

Ответы [ 3 ]

0 голосов
/ 25 февраля 2020
print()
total = calcTotal(totalPlastic, totalMetal, totalGlass)
printNum(total)
break

Здесь вы используете разрыв, и l oop выходит и не go вперед. break используется в то время как l oop endProgram == 'n', и он ломается и никогда не идет вперед.

Еще одна вещь, это плохой привычка делать определение первым. Всегда определяйте main после других функций, а не просто вызывайте main ().

Используйте это -

if(__name__ == '__main__'):
       main()
0 голосов
/ 25 февраля 2020

Оператор break выходил из вашего скрипта, поэтому ваша строка endProgram = input('Do you want to end the program? (y/n): ') была недоступна, поэтому его никогда не "просили".

Также исправьте некоторые отступы, присвойте им go .

def main():
    endProgram = 'n'
    print()
    while endProgram == 'n':
        total = 0
        totalPlastic = 0
        totalMetal = 0
        totalGlass = 0
        endCount = 'n'
        while endCount == 'n':
            print()
            print('Enter 1 for Plastic')
            print('Enter 2 for Metal')
            print('Enter 3 for Glass')
            option = int(input('Enter now: '))
            if option == 1:
                totalPlastic = getPlastic(totalPlastic)
            elif option == 2:
                totalMetal = getMetal(totalMetal)
            elif option == 3:
                totalGlass = getGlass(totalGlass)
            else:
                print('You have entered an invalid input')
                return main()

            endCount = input('Do you want to calculate the total? (y/n): ')
        print()
        total = calcTotal(totalPlastic, totalMetal, totalGlass)
        printNum(total)


        endProgram = input('Do you want to end the program? (y/n): ')


def getPlastic(totalPlastic):
    plasticCount = int(input('Enter the number of Plastic bottles you have: '))
    totalPlastic = totalPlastic + plasticCount * .03
    return totalPlastic


def getMetal(totalMetal):
    metalCount = int(input('Enter the number of Metal cans you have: '))
    totalMetal = totalMetal + metalCount * .05
    return totalMetal


def getGlass(totalGlass):
    glassCount = int(input('Enter the number of Glass bottles you have: '))
    totalGlass = (totalGlass + glassCount * .10)
    return totalGlass


def calcTotal(totalPlastic, totalMetal, totalGlass):
    total = totalPlastic + totalMetal + totalGlass
    return total


def printNum(total):
    print('Your total recyclable value is $', total)

main()
0 голосов
/ 25 февраля 2020

Удалить break непосредственно перед Do you want to end the program? (y/n)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...