我正在尝试执行此python错误处理任务,我尽我所能,但它不打印它应该是什么。任何身体可以帮助我,我错过了什么?非常感谢! 的分配: 此练习将几个正常错误场景组合到一个程序中。在本练习中,创建一个程序,提示用户输入文件名。根据用户输入,打开给定文件并将内容读入一个大字符串。然后将此字符串转换为整数,并将数字1000除以数字。最后,打印出该部门的结果。
这里的想法是,无论用户输入是什么,程序都可以运行。如果找不到该文件,程序将打印"似乎没有该名称的文件。",如果转换失败,"文件内容不合适。",in其他错误"程序出现问题。"或者如果一切正常,"结果是[结果]。"。在任何情况下(除了使用Ctrl-C的KeyboardInterruption),程序应该不可能打破用户输入。如果一切按预期工作,则会打印以下内容:
>>>
Give the file name: hahaha...NO
There seems to be no file with that name.
>>>
Give the file name: notebook.txt
The file contents were unsuitable.
>>>
Give the file name: number.txt
The result was 3.194888178913738
>>>
我的代码
def getfilename():
filename = input("Give the file name: ")
return filename
def main():
returned=getfilename()
try:
handle = open(returned,"r")
filetext = handle.read()
result=int(1000/filetext)
except IOError:
print ("There seems to be no file with that name.")
except (TypeError, ValueError):
print ("The file contents were unsuitable.")
else:
print ("The result was",result)
if __name__ == "__main__":
getfilename()
我的代码输出
Give the file name: hahaha...NO
答案 0 :(得分:3)
当您真的想致电getfilename
时,您已在__main__
区块中致电main
。
为了避免您接收的后续TypeError
,您希望在之前将filetext
强制转换为中的数字。鉴于您的预期输出是:
"The result was 3.194888178913738"
...您可能想要将其设为float
而不是int
:
result = 1000 / float(filetext)