我需要从.txt文件中读取输入并输出到另一个文件。用户发出的“创建”命令将病人添加到列表中,如果存在这样的字符,“remove”就应该删除它们。“list”函数输出保存的所有字符。
问题是,remove函数总是给出结果,即使它是在之前实际添加的,但“由于缺勤而不能移除病人”。我可以理解,它被成功地附加到列表中,因为当使用' list‘函数时,它确实会出现在结果中。
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记录在案。帕齐兹病人被记录在案。列有所有病人的名单
患者因缺勤而不能切除食欲不振(ş),通常应说“病人食疗ş被删除”,并将其从患者名单中删除。
发布于 2022-11-13 13:44:51
您正在将一个数组附加到frameList,但随后您试图找到一个具有几乎相同值的不同数组。
例如:您正在添加这样的数组:"create“、"Marcus”、.然后你想在frameList里找到“移除”,“马库斯”,.
您可以尝试在没有指示操作的第一个元素的情况下追加数组。并在frameList中搜索没有第一个元素的数组。在这种情况下,数组应该是相同的,并且应该工作。
https://stackoverflow.com/questions/74421380
复制相似问题