Python面试题
前几天偶遇一道面试题,试题如下:
参赛者会看见三个大箱子,其中一箱子里面有一个美女,选中有美女的那个箱子可赢得美女一日游的机会,另外两箱子里面则各藏有抠脚大汉。当参赛者选定了一个箱子,但未去开启它的时候,节目主持人开启剩下两个箱子的其中一个箱子,冒出其中一位抠脚大汉主持人其后会问参赛者要不要换另一个仍然闭上的箱子。问题是:你是否会重选?请写一段程序来模拟以上场景,算出重选或不重选的概率,以佐证你的选择是否正确。(可用java、 Python、 golang其中一种语言来实现)
代码仅供参考,未知对错,实现代码如下:
import random
def random_product(dict):
num_list = [1, 2, 3]
first_key = random.choice(num_list)
pick_one = dict[first_key]
num_list.remove(first_key)
second_key = random.choice(num_list)
pick_two = dict[second_key]
return pick_one, pick_two
def rechoice(pick_one, pick_two):
pick_one, pick_two = pick_two, pick_one
if pick_one == "beauty":
return True
else:
return False
def no_rechoice(pick_one, pick_two):
if pick_one == "beauty":
return True
else:
return False
if __name__ == \'__main__\':
dict = {1: \'beauty\',
2: \'ugly-man\',
3: \'ugly-man\'
}
true_sum = 0
false_sum = 0
for i in range(100000):
pick_one, pick_two = random_product(dict)
if rechoice(pick_one, pick_two):
true_sum += 1
else:
false_sum += 1
print("交换正确的概率:", \'%.3f\' % (true_sum / 100000))
print("交换错误的概率:", \'%.3f\' % (false_sum / 100000))