Математический модуль Python и «Think Python» - PullRequest
0 голосов
/ 25 декабря 2011

Я застрял в главе 3.3 «Математические функции» «Think Python».

Он говорит мне, чтобы импортировать математику (через интерпретатор).Затем напечатайте математику, и я должен получить что-то вроде этого: <module 'math' from '/usr/lib/python2.5/lib-dynload/math.so'>

Вместо этого я получу <module 'math' <built-in>>

В любом случае, это не проблема.Хотя я не смог найти файл 'math.so' в своей папке python.Наиболее похожий файл называется test_math.

Проблема в том, что я должен написать это:
>>> ratio = signal_power / noise_power

>>> decibels = 10 * math.log10(ratio)

>>> radians = 0.7

>>> height = math.sin(radians)

Когда я пишу первую строку, это говорит мне следующее:
Traceback <most recent call last>:
File "<stdin>", line 1, in <module>
NameError: name 'signal_power' is not defined

В книге говорится: «Первый пример использует log10 для вычисления отношения сигнал / шум в децибелах (при условии, что определены параметры signal_power и noise_power)».

Поэтому я предполагаю, что проблема может заключаться в том, что я неЯ определил «signal_power», но я не знаю, как это сделать и что ему назначить ...

Впервые я чувствую, что эта книга не держит меня за руку, и я "Я уже потерян.Честно говоря, я не понимаю всей этой главы.

Кстати, я использую Python2.7 и Windows XP.Я могу скопировать и вставить всю главу, если кто-то посчитает, что я должен это сделать.
Python - мой первый язык, и я уже пытался выучить его, используя «Изучение Python трудным путем», но застрял в главе 16. Поэтому я решилиспользовать «Think Python», а затем вернуться к «Изучение Python трудным путем».

Ответы [ 4 ]

3 голосов
/ 25 декабря 2011

Вы поняли это - вы должны установить значение signal_power перед его использованием. Что касается того, что вы должны установить - это на самом деле не вопрос, связанный с Python, но 1 всегда является безопасным выбором :) Пока вы это делаете, не забудьте определить noise_power.

1 голос
/ 25 декабря 2011

Нельзя использовать переменную без ее предварительного определения / объявления.Когда вы говорите ratio = signal_power / noise_power, вы пытаетесь получить доступ к двум переменным, о которых интерпретатор никогда не слышал.

Прежде чем сообщить машине, что делать с переменными, вы должны сначала представить их им.1004 *

Вы делаете это, объявляя их:

signal_power = 123
noise_power = 321

Вы можете определить их как любое число, а не только 123 и 321, но вы должны определить их перед использованием.

1 голос
/ 25 декабря 2011

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

signal_power = 100
noise_power = 17

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

1 голос
/ 25 декабря 2011

Книга предназначена для более старой версии python. Но это не имеет отношения к вашему актуальному вопросу.

Попробуйте определить signal_power. Например

signal_power = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...