Не понимаю, почему while не видит стоп слово и продолжает запрашивать input

def check(summa):if summa <= 8000:print('Сумма ниже среднего.')elif 8000 < summa < 10000:print('Оптимальная сумма.')else:print('Необходимо согласование!')k = 0summa = int(input('Необходимая сумма(0-завершить)'))while summa != '0':check(summa)k+=summasumma = int(input('Необходимая сумма(0-завершить)'))print(f"Всего запрошено денег:{k}")

Ответы (3 шт):

Автор решения: Alexey Trukhanov

Насколько можно понять Ваш код (лучше, конечно, оформлять код в специальной разметке) Ваша проблема в том, что Вы конвертируете инпут в целое число, а условие в while ожидает строчный 0 (0 оформлен в кавычки). Поэтому условие выхода невозможно достигнуть. Надо убрать кавычки у ноля в условии while.

while summa != 0:
→ Ссылка
Автор решения: Daria

Ты сравниваешь с символом '0', а надо просто с нулем 0. Убери кавычки

def check(summa):
    if summa <= 8000:
        print('Сумма ниже среднего.')
    elif 8000 < summa < 10000:
        print('Оптимальная сумма.')
    else:
        print('Необходимо согласование!')
        k = 0
        summa = int(input('Необходимая сумма(0-завершить)'))
        while summa != 0:
            check(summa)
            k+=summa
            summa = int(input('Необходимая сумма(0-завершить)'))
            print(f"Всего запрошено денег:{k}")

print(check(11000))
→ Ссылка
Автор решения: OlegXio

У вас проверка в цикле while сравнивает значение переменной summa со строкой, но нигде в коде переменной summa не присваивается строковое значение. Исправьте строку while summa != '0':, и получите в итоге while summa != 0:

→ Ссылка