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))

posted on 2020-04-21 15:16  一位优秀的电工  阅读(199)  评论(0编辑  收藏  举报

导航