我用Python创建了一个类,但无法调用该方法

我用Python创建了一个类,但无法调用该方法,python,class,oop,Python,Class,Oop,我试图实现的目标-我编写了这段代码,以便使用统计中的自举方法创建95%的平均值置信区间。我想将一个整数列表传递给“CI”方法,然后让该方法在末尾返回字符串 问题-运行代码时,代码不会生成任何输出。请帮忙 代码如下: class bootstrapping(object): def __init__(self,hours=[]): self.hours = hours def CI(self,hours): from random import

我试图实现的目标-我编写了这段代码,以便使用统计中的自举方法创建95%的平均值置信区间。我想将一个整数列表传递给“CI”方法,然后让该方法在末尾返回字符串

问题-运行代码时,代码不会生成任何输出。请帮忙

代码如下:

class bootstrapping(object):

    def __init__(self,hours=[]):
        self.hours = hours

    def CI(self,hours):
        from random import randint
        x=0
        for numbers in range(0,1000):
            bootstraplist = []
            while x >= 0:
                bootstraplist.append(hours[randint(0,6)])
            if x <= 5:
                x += 1
                continue
            else:
                break
        listofmeans.append(sum(bootstraplist) / len(bootstraplist))
        import numpy
        s = numpy.std(listofmeans)
        z = 1.96

        lower_confidence = (sum(listofmeans) / len(listofmeans)) - z*s
        upper_confidence = (sum(listofmeans) / len(listofmeans)) + z*s

        return "Lower confidence:",lower_confidence,"Upper confidence:",upper_confidence
类引导(对象):
定义初始(self,小时=[]):
self.hours=小时
def CI(自身,小时数):
从随机导入randint
x=0
对于范围(01000)内的数字:
bootstraplist=[]
当x>=0时:
bootstraplist.append(小时[randint(0,6)])
如果x问题在这里:

while x >= 0:
    bootstraplist.append(hours[randint(0,6)])
这是一个无限循环,应该知道缩进级别是python中创建代码块的地方,因此下面的
if
while
具有相同的级别,
if
while
块之外

我不确定你的目标是什么,但在固定时间内重复代码的更简单方法是在范围(n)上使用for循环,其中n是重复操作的时间数。在你的情况下,可能是这样的

for _ in range(5):
    bootstraplist.append(hours[randint(0,6)])
(对于我们不关心其值和/或不使用的变量,使用
\
是一种惯例)

或者您可以使用列表理解直接创建列表

bootstraplist = [hours[randint(0,6)] for _ in range(5) ]
另外,使用它的方式看起来比使用randint更好

bootstraplist = [choice(hours) for _ in range(5) ]
另外,将所有导入放在代码中的第一件事上是一种好的做法

考虑到这一点以及评论,也许这就是你想要的

import numpy
from random import choice

class bootstrapping(object):

    def __init__(self,hours=[]):
        self.hours = hours

    def CI(self):
        listofmeans = []
        for numbers in range(0,1000):
            bootstraplist = [ choice(self.hours) for _ in range(5) ]    
            listofmeans.append(sum(bootstraplist) / len(bootstraplist))

        s = numpy.std(listofmeans)
        z = 1.96

        lower_confidence = (sum(listofmeans) / len(listofmeans)) - z*s
        upper_confidence = (sum(listofmeans) / len(listofmeans)) + z*s

        return "Lower confidence:",lower_confidence,"Upper confidence:",upper_confidence
试验


你到底怎么称呼它?您能显示实际调用该方法的代码吗?
当x>=0时:
将创建一个无限循环,如果您不在循环内减少
x
。欢迎使用Stackoverflow!为了充分利用网站,提出好的问题很重要。提问指南位于:另外,
listofmeans
在方法中最初从未声明过。你的声明在哪里?
*
表示它没有返回,正如@elethan所说,你有一个无限循环。非常感谢!这正是我需要的
>>> test=bootstrapping(range(1,6))
>>> test.CI()
('Lower confidence:', 1.7676140938359097, 'Upper confidence:', 4.2427859061640962)
>>>