首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么代码的一部分假设列表已经展开,而另一部分没有扩展呢?

为什么代码的一部分假设列表已经展开,而另一部分没有扩展呢?
EN

Stack Overflow用户
提问于 2022-11-13 13:23:46
回答 1查看 39关注 0票数 -3

我需要从.txt文件中读取输入并输出到另一个文件。用户发出的“创建”命令将病人添加到列表中,如果存在这样的字符,“remove”就应该删除它们。“list”函数输出保存的所有字符。

问题是,remove函数总是给出结果,即使它是在之前实际添加的,但“由于缺勤而不能移除病人”。我可以理解,它被成功地附加到列表中,因为当使用' list‘函数时,它确实会出现在结果中。

代码语言:javascript
复制
input_file = open('doctors_aid_inputs.txt', 'r')
output_file = open('doctors_aid_outputs.txt', 'w')
read = input_file.readlines()

# Break down the commands so that they indicate one list each, allowing us to handle them seperately
mainList = []
for line in read:
    if line[-1] == '\n':
        command = line[:-1].split()
    else:
        command = line.split()
    mainList.append(command)

frameList = []
for i in mainList:
    if i[0] == 'create':
        patientName = i[1][:-1]
        accuracy = i[2]
        diseaseName = i[3]
        incidence = i[4]
        treatment = i[5]
        risk = i[6]
        if i not in frameList:
            frameList.append(i)
            output_file.write('Patient ' + patientName + ' is recorded.\n')
        else:
            output_file.write('Patient ' + patientName + ' cannot be created due to duplication.\n')
    elif i[0] == 'remove':
        patientName = i[1]
        if i in frameList:
            frameList.remove(i)
            output_file.write('Patient ' + patientName + ' is removed.\n')
        else:
            output_file.write('Patient ' + patientName + ' cannot be removed due to absence.\n')
    elif i[0] == 'list':
        output_file.write('Patient           Diagnosis         Disease           Disease            Treatment              Treatment          \n')
        output_file.write('Name              Accuracy          Name              Incidence          Type                   Risk               \n')
        output_file.write('-------------------------------------------------------------------------------------------------------------------\n')
        for j in range(len(frameList)):
            for k in range(1, len(frameList[j])):
                output_file.write(str(frameList[j][k]) + ' ' * (18 - len(frameList[j][k])))
            if k == len(frameList[j]) - 1:
                output_file.write('\n')

输入文件如下:创建Hayriye,0.999,乳腺癌,50/100000,外科,0.40创建Deniz,0.9999,肺癌,40/100000,放射治疗,0.50创建Ateş,0.99,甲状腺癌,16/100000,化疗,0.02创建Toprak,0.98,前列腺癌,21/100000,激素治疗,0.20创建Hypatia,0.9975,胃癌,15/100000,免疫治疗,0.04创建帕齐兹,0.9997,结肠癌,14/100000,靶向治疗,0.30列表删除ş.

病人Hayriye被记录在案。病人Deniz被记录在案。记录患者食源性ş。病人Toprak被记录在案。病人Hypatia记录在案。帕齐兹病人被记录在案。列有所有病人的名单

患者因缺勤而不能切除食欲不振(ş),通常应说“病人食疗ş被删除”,并将其从患者名单中删除。

EN

回答 1

Stack Overflow用户

发布于 2022-11-13 13:44:51

您正在将一个数组附加到frameList,但随后您试图找到一个具有几乎相同值的不同数组。

例如:您正在添加这样的数组:"create“、"Marcus”、.然后你想在frameList里找到“移除”,“马库斯”,.

您可以尝试在没有指示操作的第一个元素的情况下追加数组。并在frameList中搜索没有第一个元素的数组。在这种情况下,数组应该是相同的,并且应该工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74421380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档