【问题标题】:Python 3.6 Statistics module - NameError: name 'statistics' is not definedPython 3.6 统计模块 - NameError: name 'statistics' is not defined
【发布时间】:2018-06-11 05:19:22
【问题描述】:

在 python 3.6 中学习使用“统计模块”时,我遇到了以下错误: NameError:名称“统计”未定义 我只是在测试应该返回均值、中值、众数、标准差、方差的统计基本函数。 我是 Python 新手,找不到错误所在。

代码:

from statistics import *

example_list = [5,2,5,6,1,2,6,7,2,6,3,5,5]

x = statistics.mean(example_list)
print(x)

y = statistics.median(example_list)
print(y)

z = statistics.mode(example_list)
print(z)

a = statistics.stdev(example_list)
print(a)

b = statistics.variance(example_list)
print(b)

我做错了什么?

【问题讨论】:

    标签: python python-3.x statistics


    【解决方案1】:

    "from" module "import" * 引入在 __all__ 中定义的所有名称(如果存在),以及除了以下划线开头的名称之外的所有名称(如果 __all__ 不存在)。

    您不需要限定导入的名称(即,在它们前面加上statistics)。直接用了median,mode,stdev,variance

    【讨论】:

    • 也许值得回答from something import * 真的不是一个好主意,解决这个问题的更好方法是import statistics 并保持其余代码不变?
    • 感谢您的回答。我得到了相同的 NameError 'mean' is not defined after 'statistics' prefix
    【解决方案2】:

    如果我在 IDLE 中执行此操作,一切都会按预期工作。

    >>> from statistics import *
    >>> example_list = [5,2,5,6,1,2,6,7,2,6,3,5,5]
    >>> x = mean(example_list)
    >>> x
    4.230769230769231
    

    所以我没有收到您在x = mean(example_list) 报告的错误。

    你还没有报告你的堆栈跟踪(为什么不?)所以我无法告诉你,但我怀疑你已经将你的测试程序命名为statistics.py,这隐藏了真正的statistics 模块。

    【讨论】:

    • 你是绝对正确的。谢谢你。我仍然不明白如何命名脚本 statistics.py 将隐藏所有函数的模块,但是当我将其更改为 stats.py 时,一切正常。
    • statistics 模块位于一个名为 statistics. py 的文件中。在本地文件夹中拥有自己的同名模块优先。
    猜你喜欢
    • 2023-03-11
    • 2022-12-02
    • 1970-01-01
    • 2023-01-02
    • 2013-04-09
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 2012-06-13
    相关资源
    最近更新 更多