如何自定义随机函数,设置单词打印间隔4次后才可重复输出?
实现带锁定期的随机单词输出
修改后的完整代码
import random import tkinter as tk from tkinter import ttk root = tk.Tk() root.geometry('300x200') # 初始化单词列表和锁定期跟踪字典 word_list = ("Word A1", "Word A2", "Word A3", "Word A4", "Word A5", "Word A6", "Word A7", "Word A8") lock_tracker = {word: 0 for word in word_list} def func(): global lock_tracker # 过滤掉仍在锁定期的单词 available_words = [word for word in word_list if lock_tracker[word] == 0] # 随机选择可用单词 selected_word = random.choice(available_words) # 打印输出 print("NEW") print(selected_word) print(" ") # 更新锁定期:选中单词设为4次锁定期,其余单词锁定期减1(最小为0) lock_tracker = {word: (4 if word == selected_word else max(lock_tracker[word] - 1, 0)) for word in word_list} button = ttk.Button(root, text='Random', command=func) button.place(x=10, y=10) root.mainloop()
关键逻辑说明
- 锁定期跟踪:用
lock_tracker字典记录每个单词的剩余锁定期,初始值全为0(无锁定状态)。 - 可选单词过滤:每次点击按钮时,仅从锁定期为0的单词中随机选取,确保刚输出的单词在后续4次点击中不会被重复选中。
- 锁定期更新:选中目标单词后,将它的锁定期设为4;其余所有单词的锁定期减1(但不会低于0),经过4次点击后,该单词的锁定期会归零,重新回到可选列表。
- 修正原代码问题:原代码中
a_random = print(random.choice(a))逻辑错误,print()函数返回None,现在改为先选中单词再打印,保证变量赋值和输出逻辑正确。
内容的提问来源于stack exchange,提问作者Evangelos Dellas
相关产品推荐
相关产品推荐

