【发布时间】:2015-02-21 20:10:49
【问题描述】:
在 while 循环中使用随机数时,我在使用类时遇到了一点问题。目标是第一次生成随机字符串并在整个课程中使用它。这是有问题的四行。
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
问题是在第一个块之后 review_lesson 是一个空白空间,因为 level.review() 没有被调用,但是如果 level.review 被调用,它就会变成另一个随机序列。
编辑:使代码更加清晰,并删除了重复的函数。
【问题讨论】:
-
将随机调用移到方法之外,为什么还要向 self.word 添加一个空字符串并分配 self.word = ... 两次?
-
@poor 编码为第二个。 def run_review 是一个 while 循环,它为 pygame 运行循环,但正如您的建议,我已编辑为显示:
-
self.word + ""与self.word相同,如果您只想要一个值,只需将shuffled_list声明为类属性,就像我的回答中一样或实例属性,具体取决于您想要的。然后在方法中使用,这样只会创建一次 -
你确实是对的,我唯一的问题是 self.history_list 是在 init 中定义的,所以现在它不会让我定义它。
-
我不确定我是否遵循,为什么不能将其定义为属性?