如何每次调用函数时用random.choice()生成新结果并赋值给worrd变量
解决方案
你当前的问题是worrd变量仅在程序启动时被赋值一次,导致每次调用start()函数都使用同一个旧值。要实现每次调用函数都生成新的随机文本,有两种直接的解决方式:
方法1:在start()函数内重新生成随机词(推荐)
将随机选择的逻辑移到start()函数内部,这样每次调用该函数时都会重新执行随机选择操作:
import random colours = ["red","yellow","orange","green","blue","purple","grey"] words = ["red","yellow","orange","green","blue","purple","grey"] def get(): print(ent.get()) def start(): print("started") lab.pack_forget() sta.pack_forget() opt.pack(padx=5,pady=4) ent.pack(padx=5,pady=9) acc.pack(padx=7,pady=9) # 每次调用start时重新生成随机词 worrd = random.choice(words) opt.config(text=worrd,fg=random.choice(colours))
方法2:使用全局变量(需跨函数使用worrd时)
如果worrd需要在start()之外的其他函数中使用,可以声明其为全局变量,然后在函数内重新赋值:
import random colours = ["red","yellow","orange","green","blue","purple","grey"] words = ["red","yellow","orange","green","blue","purple","grey"] worrd = random.choice(words) # 可设置初始值,也可以省略 def get(): print(ent.get()) def start(): global worrd # 声明使用全局作用域的worrd变量 print("started") lab.pack_forget() sta.pack_forget() opt.pack(padx=5,pady=4) ent.pack(padx=5,pady=9) acc.pack(padx=7,pady=9) worrd = random.choice(words) # 重新赋值新的随机词 opt.config(text=worrd,fg=random.choice(colours))
注:你的代码中words是列表而非字典,若实际需求是从字典中选取内容,可调整为random.choice(list(your_dict.keys()))或random.choice(list(your_dict.values())),根据需要选取键或值。
内容的提问来源于stack exchange,提问作者turtlesXD
相关产品推荐
相关产品推荐

