我有一个小脚本,可以从一组范围内为我生成一个随机数,例如:(1-6)。现在我不仅要读取一个范围,还要添加另一个范围或单个数字,例如:('1-6', '10', '12-17')到目前为止,我的脚本看起来像这样,“choose_frame_set”是范围的参数:def retime_frames(): # choose frame set from presets fr_range = hou.evalParm("choose_frame_set") # extract frame range from list into readable string fr_sequence = [] for frames in fr_range.split(','): if '-' in frames: a, b = frames.split('-') a, b = int(a), int(b) fr_sequence.extend(range(a, b + 1)) else: a = int(frames) # set random frame from frame range random_frame = str(random.sample(fr_sequence, 1)) # replace special characters for char in '[]': random_frame = random_frame.replace(char,'') hou.parm('retime_frame').set(random_frame) print random_frame return random_frame我如何添加额外的范围或单个数字,以更好地控制我随机化的数字?
2 回答
慕少森
TA贡献2019条经验 获得超9个赞
您可以使用选择方法:
from random import choice
def ran(*r):
num = []
for n in r:
num += [m for m in range(n[0],n[1]+1)]
return choice(num)
print(ran((1,4),(5,7),(12,13)))
所有可能的输出:1,2,3,4,5,6,7,12,13
慕工程0101907
TA贡献1887条经验 获得超5个赞
参考我问题下splash58的评论,解决办法是:
似乎,如果更改
else: a = int(frames)
为,您的代码有效else:
fr_sequence.append(int(frames))
添加回答
举报
0/150
提交
取消