python一次捕获几个错误

时间:2014-03-17 02:39:07

标签: python

我正在尝试执行此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

1 个答案:

答案 0 :(得分:3)

当您真的想致电getfilename时,您已在__main__区块中致电main

为了避免您接收的后续TypeError,您希望在之前将filetext强制转换为中的数字。鉴于您的预期输出是:

"The result was 3.194888178913738"

...您可能想要将其设为float而不是int

result = 1000 / float(filetext)