Почему питон не выводит ответ
Перейти к содержимому

Почему питон не выводит ответ

  • автор:

Проблема вывода в Python: не выводит сообщение, которое написано в самом конце функции

Добрый день! Пишу программу, которая бы решала нелинейное уравнение методом Ньютона(касательных). Проблема не в реализации данного метода, а в выводе данных. Почему то не выводит сообщение, которое написано в самом конце функции: «Приближенное решение методом ньютона » + str(x1). В чем может быть проблема? Буду рад помощи, так как Python начал изучать недавно. Вот сам код:

import numpy as np a=3 b=20 A=4 eps=0.0000001 N=10 k=3 if a0: x0=a else: x0=b while True and n 

Отслеживать
52.2k 11 11 золотых знаков 109 109 серебряных знаков 312 312 бронзовых знаков
задан 13 дек 2017 в 11:55
81 1 1 золотой знак 2 2 серебряных знака 7 7 бронзовых знаков
return x1 срабатывает раньше, поэтому до print() не доходит.
13 дек 2017 в 12:00

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Как уже сказано в комментарии, вы выходите из функции раньше, чем идут функции print .

Необходимо заменить выход из функции на выход из цикла, выполнить вывод значений, вернуть значение.

def newton(a, b, eps): n = 0 if f(a) * d2f(a) > 0: x0 = a else: x0 = b while n  

Отслеживать
ответ дан 13 дек 2017 в 12:08
user207200 user207200
5,210 8 8 золотых знаков 23 23 серебряных знака 41 41 бронзовый знак

А лучше принты вообще убрать из функции, ибо мало-ли кто ее переиспользовать будет. return x1, n сделать, а результат выводить после вызова функции

13 дек 2017 в 12:11
@suit вопрос не об этом.
13 дек 2017 в 12:13

@suit, такие сообщения, по-моему лучше оформлять как logging (можно выводить в консоль или файл и настраивать уровень детализации [DEBUG, INFO, WARN, ERROR]. )

13 дек 2017 в 12:54

@MaxU, не соглашусь на счет именно этих сообщений. Логи это логи, а вывод количества итераций вполне может быть результатом, который потребитель ожидает получить не заглядывая в логи. В логи можно положить сообщения типа "iteration 1, do smth. "

Почему функция выводит none в Python?

Достаточно часто возникают вопросы: "почему моя функция ничего не возвращает?!", "почему из функции возвращается None?", "не могу понять откуда появляется None. ".

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

# Не используем оператор return, поэтому результат не возвращается. def func(x): x * x print(func(10)) #=> None # Используем оператор return, но не задаем явное значение/используем некорректно def func(x): x * x return print(func(10)) #=> None # Корректно возвращаем результат с использованием оператора return def func(x): return x * x print(func(10)) #=> 100 

Порой бывает, что по ошибке указывается возврат вместе с функцией print() . Для информации функция print() в Python выводит переданные аргументы на стандартное устройство вывода (экран), но при этом не возвращает значений, т.е. можно считать, что возвращает None .

def func(x): return print(x * x) a = 5 b = func(a) # Присваиваем результат функции переменной b # Результат работы функции выводится на экран, благодаря print() в теле функции. #=> 25 # Но при этом данный результат не присваивается переменной b. print(b) #=> None 

Если дальше по коду проводятся манипуляции с переменной b, например сложение, то возникнет ошибка TypeError :

c = b + 1 # Пытаемся сложить None и 1 print(c) # => TypeError: unsupported operand type(s) for +: 'NoneType' and 'int' 

Возможен вариант, когда функция и не должна ничего возвращать, она производит какие-либо действия с объектами в глобальной зоне видимости и на этом ее функционал заканчивается. В таком случае return может и не использоваться, но необходимо помнить, что в этом случае функция возвращает None .

# Бесполезная функция необходимая только в качестве примера. def extend_list(list1, list2): list1.extend(list2) list1 = [1, 2] list2 = [3, 4] print(extend_list(list1, list2)) # => None # При этом поставленную задачу функция выполнила - изменила list1 print(list1) # => [1, 2, 3, 4] 

В примере выше использовался метод работы со списками extend() и необходимо понимать, что метод изменяет объект, к которому применен, а не возвращает результат изменения объекта.

list3 = extend_list(list1, list2) print(list3) # => None 

Как вывести print в одну строку python

    Передать функции print() несколько аргументов. Например:

print('string1', 'string2') # => string1 string2 
print('string1', end='') print('string2') # => string1string2 

Почему у меня Python не показывает результат выполнения функций и методов?

Недавно установил Python вместе с встроенным IDE. В начале все успешно работало, но после утренних танцев с бубном, установкой Pycharm и полной переустановкой самого питона на другой диск(c), начались какие-то странные проблемы. Некоторые( а может и все) методы ведут себя пассивно, т.е. чтобы, например, вывести результат метода len(), надо вызвать его внутри print(), иначе строка возвращает.. пустоту. А вот если проделать то же самое не в IDE, а в самом Python Shell, то метод работает. Т.е. получается в командной строке методы работают, а в средах IDE(любых) - нет. Что же это может быть? Или может я настолько чайник в этом языке(это действительно так, изучать этот язык начал только вчера), что не в курсе, что все так и должно быть.. (хотя в начале, как я помню, методы и в средах работали.. или может я ошибаюсь).
Кстати, Paycharm возвращает "Process finished with exit code 0", когда я пытаюсь проделать вышесказанное( т.е. вызывать методы не заключая их в специальные методы, типа print).

  • Вопрос задан более трёх лет назад
  • 5713 просмотров

Комментировать
Решения вопроса 1

sim3x

Т.е. получается в командной строке методы работают, а в средах

нет, они работают, но их результат не печатается

только не ком строка, а интерактивная консоль

Ответ написан более трёх лет назад
Нравится 5 3 комментария
nohchiborz @nohchiborz Автор вопроса

Спасибо за пояснение. Теперь все встало на места).
Кстати, вы случайно не знаете, есть ли какие-нибудь текстовые/видео материалы по PyCharm на русском языке? Эта программа для меня настолько сложная, запутанная(для меня), что не могу даже горячую клавишу назначить, запускающую написанный код)

syschel

@nohchiborz Разработчики пичарма на хабре есть, можете их посты посмотреть. habrahabr.ru/company/JetBrains

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *