【发布时间】:2021-12-19 09:32:03
【问题描述】:
我有下面的代码也调用下面的函数。 它加载可以包含类似文本的文件
示例 1(它应该返回损坏的文件)
101 90 20,
阿布拉卡达布拉 45 30
示例 2(在本例中为函数升值错误)
101 90 20
122 50 70
样本 3(在这种情况下,函数可以很好地计算)
101 90 20
122 70 50
另外;如果用户输入了一个不存在的文件,也会报错。
问题:
我下面的代码工作正常,除了在任何情况下都打印出 s 的值,我只想在文件良好时打印异常或计算。
以上内容。
如果我从函数中删除打印,它会很好地捕获所有异常,但如果数字类型正确,它不会打印出结果
from calculate_mark import calculate_mark
try:
infile= open(input("enter a file name" ), "r" )
s=infile.read().splitlines()
for x in s:
print (calculate_mark(x))
except SyntaxError:
print("Corrupt file.")
except ValueError:
print("Values are not correct.")
except FileNotFoundError:
print("The file does not exist.")
finally:
infile.close()
def calculate_mark(s):
parts = s.split()
if len(parts)!=3: raise SyntaxError
for part in parts:
if not part.isdigit(): raise SyntaxError
mark = int(parts[1])
penalty = int(parts[2])
if penalty > mark: raise ValueError
return parts[0]+" "+str(mark-penalty)
codio 的输出是
Check 1 passed
Check 2 failed
Output:
101 70
Corrupt file.
Expected:
Corrupt file.
Feedback:
We tried with marks_file_4.txt in the Filetree.
Check 3 failed
Output:
101 70
Values are not correct.
Expected:
Values are not correct.
Feedback:
We tried with marks_file_5.txt in the Filetree.
Check 4 passed
Show diff
【问题讨论】:
-
在你给出的例子中,你的意思是每行有 3 个值吗?
101 marks penalty。而不是您示例中的 6 个? -
我真的不明白你的问题是什么。你能提取并提供一个minimal reproducible example吗?另外,预期和实际输出是多少?
-
我已经添加了 codio 的输出