Python的数学模块& “想想Python”

时间:2011-12-24 23:22:13

标签: python function module

我坚持“Think Python”的第3.3章“数学函数”。

它告诉我导入数学(通过解释器)。 然后打印数学,我应该得到这样的东西: <module 'math' from '/usr/lib/python2.5/lib-dynload/math.so'>

相反,我得到<module 'math' <built-in>>

无论如何,这不是问题。虽然我无法在我的python文件夹中找到'math.so'文件。最相似的文件名为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”。 / p>

4 个答案:

答案 0 :(得分:3)

你已经弄明白了 - 在使用它之前你必须设置signal_power的值。至于你必须设置它 - 它不是真正的Python相关问题,但1总是一个安全的选择:)当你在它时,不要忘记定义noise_power。< / p>

答案 1 :(得分:1)

这本书显然是针对旧版本的python。但这与你的实际问题无关。

尝试定义signal_power。例如

signal_power = 0

答案 2 :(得分:1)

您确实需要为signal_powernoise_power分配值。作者可能会将它们排除在外,因为这些值是任意的。即使在文本中提供了精确值,您也应该使用这些值。毕竟,如果屏幕上的结果与页面上的结果相同,那么输入任何内容都没什么意义。

signal_power = 100
noise_power = 17

这个特定的例子定义了变量之间的数学关系。如果以这样的方式呈现,那么准确的价值被遗漏就不会是一个谜,因为在使用公式时他们会提供。代码示例也是如此。

答案 3 :(得分:1)

如果没有先定义/声明变量,则无法使用变量。当你说ratio = signal_power / noise_power时, 你试图访问解释器从未听说过的两个变量。

在告诉机器如何处理变量之前,你必须先将它们引入它。

您可以通过声明它们来执行此操作:

signal_power = 123
noise_power = 321

您可以将它们定义为您想要的任何数字,不仅仅是123和321,但您必须在使用它们之前定义它们。