What causes my function to return None at the end? [duplicate]
Что заставляет мою функцию возвращать None в конце?
Моя очень простая функция python возвращает None в конце, и я не совсем уверен, почему. Я просмотрел несколько других сообщений и все еще не могу понять это.
Вот мой код:
defprintmult(n): i = 1 while i <= 10: print (n * i, end = ' ') i += 1
print(printmult(30))
Переведено автоматически
Ответ 1
Потому что в Python каждая функция возвращает значение, и None это то, что возвращается, если вы явно не укажете что-то еще.
Что именно вы ожидалиprint(printmult(30)) от нее? Вы попросили ее оценить printmult(30), а затем print какие бы результаты это ни дало. Из этого должно получиться что-то, верно? Или, может быть, вы ожидали, что будет вызвано какое-то исключение?
Пожалуйста, убедитесь, что вы понимаете, что печать и возврат - это не одно и то же.
Ответ 2
Вы ничего не возвращаете в функции printmult, поэтому при печати результатаprintmult(30) это будет None (это значение по умолчанию, возвращаемое, когда функция ничего явно не возвращает).
Поскольку в вашем методе есть print оператор внутри, и он не должен что-то возвращать (обычно, когда метод имеет что-то вроде printSomething() , он ничего не возвращает), вы должны вызвать его как:
printmult(30)
нет
print(printmult(30))
Ответ 3
Другие ответы проделали хорошую работу, указав, где находится ошибка, т. Е. вам нужно понимать, что печать и возврат - это не одно и то же. Если вы хотите, чтобы ваша функция возвращала значение, которое вы затем можете распечатать или сохранить в переменной, вам нужно что-то вроде этого:
defreturnmult(n): i = 1 result_string = '' while i <= 10: result_string += str(n * i) + ' ' i += 1 return result_string
print(returnmult(30))
Ответ 4
defprintmult(n): i = 1 while i <= 10: print (n * i, end = ' ') i += 1
printmult(30)
Проблема заключалась в том, что вы печатали возвращаемое значение функции, которая ничего не возвращает, которая печатала бы None