Python Начинающий: печать против возврата - PullRequest
1 голос
/ 29 марта 2020

Я изучаю некоторые новые вещи, и я не могу понять весь процесс возвращения из чтения моих текстов и просмотра в Интернете. Я полагаю, мне нужно, чтобы это объяснили мне однажды, чтобы я обернул голову вокруг этого.

Код здесь работает как задумано; Я хотел бы, чтобы пользователь ввел число, затем, если меньше 0, выведите 0, если больше или равно нулю, напечатайте число.

def positiveNumber():
    num = int(input("Please enter a number: "))
    if num <= 0:
        print("0")
    else:
        print(num)

positiveNumber()

Что не работает, так это то, где я просто хочу Функция возвращает значения, а затем дает мне ответ, только когда я вызываю функцию.

def positiveNumber():
    num = int(input("Please enter a number: "))
    if num <= 0:
        return 0
    else:
        return num

positiveNumber()
print(num)

Моя оболочка постоянно говорит мне "имя 'num' не определено".

Ответы [ 3 ]

3 голосов
/ 29 марта 2020

num - это локальная переменная , которая существует только в positiveNumber().

Вы хотите:

print(positiveNumber())
1 голос
/ 29 марта 2020

Переменная num определена в вашей функции. Таким образом, он существует только в «объеме» функции. Когда вы вызываете функцию, вы должны попробовать

a = positiveNumber()
print(a)

Возвращаемое значение - это то, что вы должны присвоить переменной для использования. Ваша функция отправляет обратно значение num Так что вы можете либо

print(positiveNumber())

, либо вы можете сохранить его где-нибудь, а затем использовать его. Это происходит потому, что имя num существует только внутри функции, оно вычисляется и возвращается VALUE . Таким образом, вы можете либо напрямую напечатать это VALUE , либо сохранить его в некоторой переменной, а затем использовать его.

0 голосов
/ 29 марта 2020

Вот код, который работал:

def positiveNumber():
    num = int(input("Please enter a number: "))
    if num <= 0:
        return 0
    else:
        return num

print(positiveNumber())

Большое вам спасибо!

...