白猪掌柜的
计算时下限包括 10 的倍数range。跳过 while 循环可确保您不会陷入无限循环。转换为集合可确保您知道可以获得什么。import randomdef random_excluding_values(_min, _max, exclude_list, num_of_elems): lower_bound = round(_min+4, -1) all_nums = {num for num in range(lower_bound, _max+1, 10)} exclude_set = set(exclude_list) valid_choices = all_nums - exclude_set return random.sample(valid_choices, num_of_elems)_min = 9_max = 103exclude_list = [40,50,60,70]#valid_list = [10,20,30,80,90,100]num_elems = 3 for i in range(5): print(f'run = {i}; result = {random_excluding_values(_min, _max, exclude_list, num_elems)}')输出:run = 0; result = [80, 30, 20]run = 1; result = [10, 20, 80]run = 2; result = [10, 80, 30]run = 3; result = [100, 90, 10]run = 4; result = [10, 20, 100]random.sample返回有效数字集中的选项列表。因此您可以轻松修改以获得单一号码。return random.sample(valid_choices, 1)[0]