简单的医疗诊断

一、系统设计

首先,明确了多种常见疾病(如感冒、流感、肠胃炎、糖尿病、扁桃体发炎、鼻炎等)各自对应的典型症状集合,这些集合以列表形式存储。同时,还有一个包含症状及其描述的字典。

用户输入阶段:通过一个持续的循环,不断接收用户输入的表示症状的数字。这些数字被逐一添加到一个名为 list_real 的列表中,从而构建了用户所描述的症状集合。

疾病判断逻辑:

定义了一个 is_contained 函数,用于检查一个列表(比如某疾病的症状列表)是否完全包含在另一个列表(用户输入的症状列表)中。

在 judge_last 函数中,依次将各种疾病的症状列表与用户的 list_real 进行比较。如果某疾病的症状完全包含在用户输入的症状中,就输出相应的疾病提示,比如“可能是感冒”等。如果所有疾病的症状列表都不满足完全包含的条件,则输出“根据所给条件无法判断为何种疾病”。

整个算法的核心思想是基于已知疾病的典型症状模式,通过对比用户输入的具体症状组合,尝试找出最符合的疾病诊断。这种方法依赖于对常见疾病症状的先验定义和准确的用户输入,以实现对疾病的初步推断。它在一定程度上模拟了医疗诊断中根据症状进行疾病猜测的过程,但实际医疗诊断通常会更加复杂和综合考虑多种因素。

二、程序流程图

三、代码设计

def is_contained(list1, list2):
    for sublist in list2:
        if sublist not in list1:
            return False
    return True


# 常见疾病的典型症状
ganmao = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
liugan = ['4', '5', '7', '10', '11', '12', '13']
changweiyan = ['14', '15', '16', '17', '18']
tangniaobing = ['19', '20', '21', '22']
biantaotifayan = ['6', '23', '24', '25', '26']
biyan = ['1', '2', '3', '27', '28', '7', '29']


def judge_last(list):
    if is_contained(ganmao, list_real):
        print('可能是感冒')
    elif is_contained(liugan, list_real):
        print('可能是流感')
    elif is_contained(changweiyan, list_real):
        print('可能是肠胃炎')
    elif is_contained(tangniaobing, list_real):
        print('可能是糖尿病')
    elif is_contained(biantaotifayan, list_real):
        print('可能是扁桃体发炎')
    elif is_contained(biyan, list_real):
        print('可能是鼻炎')
    else:
        print('根据所给条件无法判断为何种疾病')


dict_before = {'1': '流鼻涕', '2': '打喷嚏', '3': '鼻塞', '4': '咽喉疼痛', '5': '咳嗽', '6': '发热', '7': '头痛'
    , '8': '全身不适', '9': '轻度畏寒', '10': '高热', '11': '寒战', '12': '全身酸痛', '13': '极度疲劳'
    , '14': '腹痛', '15': '腹泻', '16': '恶心呕吐', '17': '食欲不振', '18': '腹胀', '19': '多饮'
    , '20': '多食', '21': '多尿', '22': '体重减轻', '23': '咽痛', '24': '吞咽困难', '25': '扁桃体红肿'
    , '26': '口臭', '27': '鼻痒', '28': '嗅觉减退', '29': '头昏'}
print("""输入对应条件前面的数字:
                                ****************请输入你的症状(数字)******************
                                1;流鼻涕 2:打喷嚏 3:鼻塞 4;咽喉疼痛 5:咳嗽 6:发热
                                7:头痛 8:全身不适 9:轻度畏寒 10:高热 11:寒战 12:全身酸痛
                                13:极度疲劳 14:腹痛 15:腹泻 16:恶心呕吐 17:食欲不振
                                18:腹胀 19:多饮 20:多食 21:多尿 22:体重减轻 23:咽痛
                                24:吞咽困难 25:扁桃体红肿 26:口臭 27:鼻痒 28:嗅觉减退
                                29:头昏
                                ***************一行输入一个症状回车输入下一个症状*********
                                *******************当输入数字0时!程序结束***************
     """)
# 综合数据库
list_real = []
while (1):
    # 循环输入前提条件所对应的字典中的键
    num_real = input('请输入')
    if (num_real == '0'):
        break
    list_real.append(num_real)
judge_last(list_real)

四、运行结果

五、代码扩展

个人感觉:可以连接数据库,建立一个库包含大部分疾病的典型症状,然后为所有疾病进行优先级的排序将常见疾病的优先级高,然后继续细化所有的症状,将疾病症状也划分优先级,由低到高提供更细致的症状从而使得判断正确率提高,由于太难,作者写不出来。

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

实沈-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值