gpt4 book ai didi

python 同时捕获多个错误

转载 作者:行者123 更新时间:2023-11-30 23:26:32 25 4
gpt4 key购买 nike

我正在尝试执行此 Python 错误处理任务,并且已尽我所能,但它没有打印出应有的内容。有人可以帮助我确定我缺少什么吗?非常感谢!

作业:本练习将几种常见错误场景合并到一个程序中。在本练习中,创建一个提示用户输入文件名的程序。根据用户输入,打开给定文件并将内容读入一大串。然后将此字符串转换为整数,并将数字 1000 除以数字。最后打印出除法的结果。

这里的想法是,无论用户输入什么,程序都会运行。如果找不到该文件,程序将打印“似乎没有具有该名称的文件。”。如果转换失败,则打印“文件内容不合适。”,在其他错误中,打印“程序出现问题。”,或者如果一切正常,则打印“结果是[结果]。”。在任何情况下(除了 Ctrl+CKeyboardInterruption 之外),程序应该不可能因用户输入而中断。如果一切按预期工作,它将打印以下输出:

>>> 

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

最佳答案

当您确实想调用 main 时,您正在 __main__ block 中调用 getfilename

为了避免随后收到的 TypeError 错误,您需要将 filetext 强制转换为数字然后在您的部门中使用它。鉴于您的预期输出是:

"The result was 3.194888178913738"

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

result = 1000 / float(filetext)

关于python 同时捕获多个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22446029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com