Почему python возвращает «None-value», когда его просят вернуть math.pi? - PullRequest
0 голосов
/ 02 октября 2019

Я делаю домашнее задание, и задача состоит в округлении math.pi с числом, указанным в функции pi(d=0). Поэтому, если вы введете pi (2), функция вернет 3.14. Если вы введете более 15 в функцию, она выведет «Too many decimals», а также вернет math.pi. Моя проблема в том, что моя функция теперь возвращает math.pi и "None-value"

Я пробовал разные подходы, включая различные операторы if и полное удаление оператора print. Это решает проблему, но я не буду отвечать на мое задание

import math
def pi(d=0):

    if d<=15:
         return round((math.pi), d)
    if d>15:
         return math.pi, print('Too many decimals!')

Я ожидаю, что если d>15 будет Too many decimals!, 3.141592653589793

Ответы [ 2 ]

0 голосов
/ 02 октября 2019
return math.pi, print('Too many decimals!')

Оператор return всегда возвращает одно значение;в этом случае, поскольку вы используете запятую между двумя значениями, она возвращает кортеж из двух элементов.

Давайте перепишем строку, хотя она по-прежнему делает то же самое:

result = (math.pi, print('Too many decimals!'))
return result

Итак, здесь мы видим, что первым элементом кортежа является math.pi, а вторым является любое значение, которое возвращает print ('Too many decimals!'): None.

Вместоэто то, что вы имели в виду:

print('Too many decimals!')
return math.pi
0 голосов
/ 02 октября 2019

Выражение

print('Too many decimals!')

делает print 'Too many decimals!', но его значение равно None. Это означает, что

return x, print('foo')

вернет кортеж (x, None) с побочным эффектом вывода 'foo' на консоль. Вместо этого вы можете просто вернуть саму строку:

return math.pi, 'Too many decimals!'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...