python - 在 While 循环中使用随机 Once

标签 python string random

在 while 循环中使用随机数时,我在使用类时遇到了一些问题。目标是第一次生成随机字符串并在整个类(class)中使用它。这是有问题的四行。

 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

问题是在第一个 block 之后,review_lesson 是一个空的空间,因为 level.review() 没有被调用,但是如果 level.review 被调用,它就会变成另一个随机序列。

编辑:使代码更加清晰并删除重复的函数。

最佳答案

您似乎将 self.word 分配给方法中的多个事物,因此不完全确定它在做什么,但能够使用 review 并获得相同的随机 shuffled_list 每次将 shuffled_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 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

关于python - 在 While 循环中使用随机 Once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28650762/

相关文章:

python - NumPy random.shuffle 函数

python - 将 TensorFlow Hub 与 WebHDFS 结合使用

python - 找到文件所在的 git 存储库的根目录

mysql - 如何在 MySQL 中按字符串部分分组

Python-我的 for 循环只将列表的一半从 str 转换为 int

java - String n = new String( char + int) 添加但应该连接

javascript - 动画理论(自然动画)

python - 使用 Python 发送的电子邮件中附加的文本文件为空

python - PyInstaller 和 FastAPI(超出最大递归深度)

python-3.x - 如何根据该模型上的权重字段快速获取 Django 模型实例的加权随机实例?