美文网首页
用程序解决儿子的问题:她们分别买了什么?

用程序解决儿子的问题:她们分别买了什么?

作者: redexpress | 来源:发表于2019-11-05 07:09 被阅读0次

儿子问了一个问题:
她们分别买了什么?
姗姗、圆圆、娇娇三个人一起去文具商店。她们分别买了油画棒、故事书、文具盒和书包中的一件,并且每个人买的东西都不同。
姗姗说:圆圆买的不是油画棒,娇娇买的不是故事书。
圆圆说:姗姗买的不是故事书,娇娇买的不是文具盒。
娇娇说:姗姗买的不是书包,圆圆买的是文具盒。
她们三个人,每个人说的话有有一半是真的,一半是假的。那么,她们分别买了什么东西?

我先是口头分析出答案,然后告诉儿子也可以用电脑解决这个问题,Python程序如下:

goods = ['油画棒', '故事书', '文具盒', '书包']
m = {'姗姗': None, '圆圆': None, '娇娇': None}
for a in range(4):
    for b in range(4):
        for c in range(4):
            if len(set([a, b, c])) != 3:    # 不满足条件:每个人买的东西都不同
                continue
            m['姗姗'], m['圆圆'], m['娇娇'] = goods[a], goods[b], goods[c]
            statements = [[m['圆圆'] != '油画棒', m['娇娇'] != '故事书'],
                          [m['姗姗'] != '故事书', m['娇娇'] != '文具盒'],
                          [m['姗姗'] != '书包', m['圆圆'] == '文具盒']]
            counts = [0] * len(statements)
            for index, value in enumerate(statements):
                for statement in value:
                    if statement:
                        counts[index] += 1
            if counts == [1] * len(statements):    # 每个人的说法都有一半是真的
                for key in m:
                    print("{}买了{}".format(key, m[key]))

相关文章

网友评论

      本文标题:用程序解决儿子的问题:她们分别买了什么?

      本文链接:https://www.haomeiwen.com/subject/awojbctx.html