import random class D: contain = 'sheep' def __repr__(self): return 'There is a ' + self.contain + ' behind this door' def three_door(reselect, redo=100000000): right = 0 for _ in range(redo): three_door = [D(), D(), D()] random.choice(three_door).contain = 's' choose_door = random.choice(three_door) rother_door = [door for door in three_door if not door is choose_door] for door in rother_door: if door.contain == 'sheep': rother_door.remove(door) break if reselect: choose_door = rother_door.pop() if choose_door.contain == 's': right += 1 print('进行了{0}次三门问题,是否重选 = {1},选中s概率为{2:.2%}'.format(redo, reselect, right / redo)) three_door(False, 10000) three_door(True, 10000)