2014-01-31 4 views
2

Моя очень простая функция python возвращает «None» в конце ее, и я не уверен, почему. Я просмотрел несколько других сообщений и до сих пор не могу понять. Любая помощь приветствуется.Функция Python Возврат Нет

Вот мой код:

def printmult(n): 
    i = 1 
    while i <= 10: 
     print (n * i, end = ' ') 
     i += 1 

print(printmult(30)) 
+4

Потому что вы ничего не возвращаете. – BrenBarn

+3

Позвольте мне угадать, вы программист Ruby, и вы используете для возврата последнего оператора в методе (без использования ключевого слова return);) – alfasin

+0

Как заявила BrenBarn, вы не вернули никакого значения, поэтому функция возвращает 'None', чтобы устранить проблему с вашим кодом, вам нужно будет заменить последнюю строку' printmult (30) '. –

ответ

2

Вы ничего не возвращаетесь в функции printmult, поэтому при печати результата из printmult(30) он будет None (это значение по умолчанию возвращается, когда функция ничего не возвращает).

Поскольку ваш метод имеет print заявление внутри и он не должен возвращать что-то (обычно, когда имена методов является то, как printSomething(), это ничего не возвращать), вы должны назвать его как:

printmult(30) 

не

print(printmult(30)) 
2

Поскольку в Python, каждая функция возвращает значение, и None является то, что возвращается, если вы явно не указать что-то другое.

Что именно вы ожидаетеprint(printmult(30)) делать? Вы попросили его оценить printmult(30), а затем print любые результаты. Должно получиться что-то, верно? Или вы, возможно, ожидаете какого-то исключения?

Пожалуйста, убедитесь, что вы понимаете, что Печать и возврат не то же самое.

2

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

def returnmult(n): 
    i = 1 
    result_string = '' 
    while i <= 10: 
     result_string += str(n * i) + ' ' 
     i += 1 
    return result_string 

print(returnmult(30)) 
0

Я пришел Руби, как хорошо, и это кажется странным на первый взгляд.

Если у вас есть print что-то, что содержит print заявление, последнее, что он возвращает, это None.

Если вы только что вернулись значения, а затем вызывается в print на функции не будет выводить None.

Надеюсь, что это поможет :)

Смежные вопросы