游戏开发需求:实时随机选取不重复数字并锁定已选数字
解决方案:实时选取不重复的1-100数字
你的核心需求是每次实时选一个1-100的数字,且选过的不能再被选中。之前的代码只记录了上一个选中的数字,不仅没法避免重复更早的数字,也只能运行两次,根本满足不了持续选新数字的需求。
最直接的解决办法是用**集合(set)**来存储所有已被锁定的数字——集合的元素唯一性刚好适配这个需求,而且判断某个数字是否已被选中的效率很高。
完整代码实现
from random import randint # 用集合存已选中的数字,确保不会重复 selected_numbers = set() def get_unique_number(): # 循环生成随机数,直到找到未被选中的 while True: num = randint(1, 100) if num not in selected_numbers: selected_numbers.add(num) # 锁定该数字 return num # 测试调用 # 第一次选数字 first_num = get_unique_number() print(first_num) # 第二次选数字(肯定和第一次不同) second_num = get_unique_number() print(second_num) # 可以重复调用,直到1-100所有数字都被选完
补充:处理选完所有数字的边界情况
如果游戏里需要考虑“所有数字都被选完”的情况,可以给函数加个判断,避免无限循环:
def get_unique_number(): if len(selected_numbers) >= 100: raise ValueError("1-100的数字已经全部被选中了") while True: num = randint(1, 100) if num not in selected_numbers: selected_numbers.add(num) return num
这样当所有数字都被选完时,函数会抛出明确的错误,你可以在游戏逻辑里捕获这个错误,做对应的处理(比如提示玩家、重置数字池等)。
内容的提问来源于stack exchange,提问作者user22371743
相关产品推荐
相关产品推荐

