甲、乙、丙、丁四位学生在广场上踢足球,打碎了玻璃窗,有人问他们时, 他们这样说: 甲:“玻璃是丙也可能是丁打碎的”; 乙:“是丁打碎的”; 丙:“我没有打坏玻璃”; 丁:“我才不干这种事”; 深深了解学生的老师说:“他们中有三位决不会说谎话”。那么,到底是谁打 碎了玻璃? 那么是谁打碎了玻璃?(丁打碎了玻璃) 要求:将逻辑推理过程单独写成函数详细点
时间: 2023-10-06 17:09:11 浏览: 182
通过“打碎”、“分派”可形成如下DFD-2011王立福的软件工程课件
可以将逻辑推理过程单独写成一个函数,具体实现如下:
```python
def who_broke_the_glass():
# 首先假设丁打碎了玻璃
is_ding = True
# 甲说的话可以推出丙或丁打碎了玻璃
if not is_ding:
if is_ceng or is_ding:
is_abc_true = True
else:
is_abc_true = False
# 乙说的话与假设矛盾,因此排除丁打碎玻璃的情况
if is_ding:
return "丁"
# 丙说的话与甲的话矛盾,因此排除丙打碎玻璃的情况
if is_abc_true:
is_ceng = False
else:
is_ceng = True
# 最后判断剩下的人中是否有丁,如果有则丁打碎了玻璃,否则甲乙丙三人说谎
if not is_ding and not is_ceng:
return "甲乙丙三人说谎"
else:
return "丁"
```
函数中首先假设丁打碎了玻璃,然后根据每个人说的话推出可能打碎玻璃的人,并逐一排除不可能的情况,最后判断剩下的人中是否有丁。如果有,则丁打碎了玻璃;如果没有,则甲乙丙三人说谎。
阅读全文