我已经花了几个小时尝试调试该程序,但是我没有弄清楚为什么它不能正常工作。该程序应读取测试结果,在控制台上从用户那里获取结果文件,将摘要行写入输出文件,并在任何结果超出正常范围时向控制台打印标志。
# str file_name, test_name, output_line, result_str, min_res_str, max_res_str
# file results_file, output_file
# int result, min_res, max_res
# bool done
done = False
flag = True
file_name = input("Please enter the name of the file, without the .txt extension: ")
results_file = open(file_name+".txt")
output_file = open(file_name+"_output.txt", "w")
while not done:
# read a test result
test_name = results_file.readline()
test_name == test_name.rstrip("\n")
if test_name != "":
result_str = results_file.readline()
if result_str != "":
result = str(result_str)
min_res_str = results_file.readline()
if min_res_str != "":
min_res = int(min_res_str)
max_res_str = results_file.readline()
max_res = int(max_res_str)
else:
done = True
else:
done = True
else:
done = True
# process
if not done:
output_line = output_file.write(test_name+"\t" + str(result)+"\t")
if min_res > result:
output_line = "low\n"
elif max_res < result:
output_line = "high\n"
else:
output_line = "within normal limits\n"
flag = False
output_file.write(output_line)
results_file.close()
output_file.close()
if flag:
print("Test result out of range: check results.")
我得到的错误是
Traceback (most recent call last):
File "C:/Python34/saves/midtermprep.py", line 42, in <module>
if min_res > result:
TypeError: unorderable types: int() > str()
我有此程序的输入txt文档
NA
141
136
145
K
4.8
3.5
5.3
CL
100
98
107
CO2
20
22
32
CALCIUM
9.6
8.4
最佳答案
您将一个int(min_res或max_res)与一个字符串(结果)进行比较,这是行不通的。比较之前将结果转换为int
if min_res > int(result):
output_line = "low\n"
elif max_res < int(result):
output_line = "high\n"