@AnnoyingWolf

После вызова функции вылетает программа?

После вызова функции и ввода туда 2-ух числовых значений закрывается программа

def ans_input():
    ans1 = float(input('Введите первое число:'))
    ans2 = float(input('Введите другое число:'))
while True:
    user_input = input('Ввод:')
    if user_input == 'выйти':
        break
    elif user_input == 'прибавить':
        ans_input()
        result = (ans1 + ans2)
        print('Ответ', result)
    elif user_input == 'отнять':
        ans_input()
        result = (ans1 - ans2)
        print('Ответ', result)
input('ENTER')

Но когда я вручную ввожу без использования функции,тогда всё работает прекрасно

elif user_input == 'прибавить':
        ans1 = float(input('Введите первое число:'))
        ans2 = float(input('Введите другое число:'))
        result = (ans1 + ans2)
        print('Ответ', result)
  • Вопрос задан
  • 302 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Переменные ans1 и ans2 локальные и существуют только в пределах функции ans_input.

def ans_input():
    ans1 = float(input('Введите первое число:'))
    ans2 = float(input('Введите другое число:'))
    return ans1, ans2


while True:
    user_input = input('Ввод:')
    if user_input == 'выйти':
        break
    elif user_input == 'прибавить':
        ans1, ans2 = ans_input()
        result = (ans1 + ans2)
        print('Ответ', result)
    elif user_input == 'отнять':
        ans1, ans2 = ans_input()
        result = (ans1 - ans2)
        print('Ответ', result)
input('ENTER')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AnnTHony
@AnnTHony
Интроверт
def ans_input():
    ans1 = float(input('Введите первое число:'))
    ans2 = float(input('Введите другое число:'))
    return ans1 + ans2


while True:
    user_input = input('Ввод:')
    if user_input == 'выйти':
        break
    elif user_input == 'прибавить':
        result = ans_input()
        print('Ответ', result)
    else:
        pass
input('ENTER')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы