使用随机偶尔循环

2024-04-26 02:31:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我在while循环中使用random时使用类有点问题。目标是第一次生成一个随机字符串并在整个课程中使用它。这是有问题的四行。你知道吗

 def run_review(self, key_history):
        level = reviewer.ReviewLesson(self.history_list)
        if self.counter:
            level.shuffled()
            self.counter = False
            return shuffle
        level.review()
        level.review_lesson()

从另一个模块

def shuffled(self):
        self.shuffled_list = sorted(self.history_list, key=lambda k: random.random())
        return self.shuffled_list

    def review(self): 
        for item in self.shuffled_list:
            self.word = item+self.word
        self.word = self.word*7
        return self.word


    def review_lesson(self):
        word = ''
        self.word = word+self.word
        return self.word

问题是在第一个街区之后,复习课是一个空白,因为级别.评审()不被调用,但是如果级别.评审它被称为另一个随机序列。你知道吗

编辑:使代码更加清晰,并删除了重复的函数。你知道吗


Tags: keyselfreturndefcounterrandom级别item
1条回答
网友
1楼 · 发布于 2024-04-26 02:31:21

你好像在分配任务自我介绍在方法中执行多个操作,因此不能完全确定这是在做什么,但每次都可以使用review并获得相同的随机shuffled_list将shuffled\u list声明为类属性:

 # either declare before init, or use self.shuffled_list = .. in your init method
 shuffled_list = sorted(self.history_list, key=lambda k: random.random())

def review(self): 
        for item in class_name.shuffled_list:
            self.word = item+self.word
        self.word *= 7
        return self.word

例如:

 class Foo():
    r = randint(1, 7) # either here as class attribute so it will be the same for all instances
    def func(self):
        return  Foo.r

##   End pasted text  

In [13]: for _ in range(5):
            f = Foo()
            print(f.func())
            f1 = Foo()
            print(f1.func())
   ....:     
2
2
2
2
2
2
2
2
2
2

class属性将使所有实例保持相同:

class Foo():
    r = randint(1, 7) 
    def func(self):
        return  Foo.r

如果希望每个实例有不同的值,请将其作为实例属性:

    class Foo():
        def __init__(self)
            self.r = randint(1, 7) 
        def func(self):
            return  self.r

相关问题 更多 >