Пока функция использует Попробуйте не возвращать значение, которое, как я думал, должно быть

Я делаю домашнее задание и пытаюсь проверить, является ли число положительным целым числом, используя Try. где-то по пути он возвращает значение моего ввода, но возвращает отрицательное значение, даже после того, как я в конце концов ввожу действительное значение. скажем, сначала я набрал -10, он говорит мне ввести еще раз, затем я набираю 2, но результат все еще -10.

def takes_desicion(name):
    print "Ok %s, now lets make a desicion what to do with your text.\n" %name
    print "you can either- 1.leave it, 2.reverse it, or 3.make a new input."
    while True:
        try:    #takes an input with exception- in this case, only integer.
            desicion = int(raw_input("Hit your number to decide."))
            print desicion
        except ValueError:
            print "Sorry, thats not a number."
            continue
        else:   #if int is negetive, goes back to the function again, recursively
            if desicion < 1:
                print "That number is illegal."
                takes_desicion(name)
            break
    return desicion

если я сначала ввожу -10, а второй ввод равен 2, я ожидаю, что вывод (возврат) будет 2. но его -10. Это значение, которое возвращает функция.

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
1
1
17
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы снова вызываете функцию takes_desicion в третьей последней строке, но ничего не делаете со значением этой функции. Вам нужно сохранить вновь возвращенное значение: desicion = takes_desicion(name)

Хотя вы должны просто использовать continue вместо перехода к первому лайку цикла while, нет необходимости снова вызывать функцию:

def takes_desicion(name):
    print "Ok %s, now lets make a desicion what to do with your text.\n" %name
    print "you can either- 1.leave it, 2.reverse it, or 3.make a new input."
    while True:
        try:    #takes an input with exception- in this case, only integer.
            desicion = int(raw_input("Hit your number to decide."))
            print desicion
        except ValueError:
            print "Sorry, thats not a number."
            continue
        else:   #if int is negetive, goes back to the function again, recursively
            if desicion < 1:
                print "That number is illegal."
                continue
            break
    return desicion

Другие вопросы по теме