Python 错误处理

输入若干数,求最大的数。输入0表示结束。要求使用try…except…结构来捕捉错误。


big=0
while True:
    try:
        num=int(input('请输入一个数:'))
        if num==0:
            break
        elif num>big:
            big=num
    except:
        print('输入的不是一个整数。')
 
print('最大的数是:',big)

该回答引用GPT:
为了在Python中处理错误,可以使用try…except…结构来捕获异常。而在本问题中,需要输入若干数并求其中的最大数,同时从用户那里接收0以表示输入结束,因此可以通过一个while循环和一个if语句来实现该功能,并在代码块中捕获ValueError以避免程序因输入不合法的数而崩溃。

可以使用以下代码实现本问题:

max_num = -float('inf')

while True:
    try:
        num = int(input('请输入一个数:'))
        if num == 0:
            break
        if num > max_num:
            max_num = num
    except ValueError:
        print('输入的不是一个整数。')

print('最大的数是:', max_num)

在这个代码块中,我们首先使用一条赋值语句来初始化最大数变量max_num。然后进入一个无限循环,在循环中接收用户输入的每个数,并将其与已知的最大数比较。如果输入的数大于当前的max_num,那么就更新max_num。最后,在用户输入0后,我们将跳出循环并输出结果。

为了捕获异常并避免程序崩溃,我们需要在输入手动抛出ValueError异常时使用一个try…except…结构,并在出现异常时打印错误信息并继续下一次循环。
如还有疑问,可留言帮助解决。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7791388
  • 这篇博客你也可以参考下:Python try……except……语句
  • 你还可以看下python参考手册中的 python- 错误输出重定向和程序终止
  • 除此之外, 这篇博客: python异常捕捉处理中的 一,try…except…捕捉异常 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    1. 获取异常并定位出错误的代码是哪一行,通过traceback模块可定位出错代码的行数与错误信息
    import traceback
    import time
    
    
    def func():
        try:
            assert 1 / 0
        except Exception as e:
            print('func %s' % str(e))
    
    
    def func2():
        try:
            assert 1 / 0
        except Exception as e:
            error_detail = traceback.format_exc()
            print('func2 %s' % error_detail)
            print('*' * 50)
            time.sleep(0.1)
            traceback.print_exc()
    
    
    func()
    print('*' * 50)
    time.sleep(0.1)
    func2()
    
    

    执行结果

    func division by zero
    **************************************************
    func2 Traceback (most recent call last):
      File "D:/Program Files/RPA-Project/Learning/test.py", line 14, in func2
        assert 1 / 0
    ZeroDivisionError: division by zero
    
    **************************************************
    Traceback (most recent call last):
      File "D:/Program Files/RPA-Project/Learning/test.py", line 14, in func2
        assert 1 / 0
    ZeroDivisionError: division by zero
    
  • 您还可以看一下 刘顺祥老师的Python数据分析与挖掘课程中的 离得近关系就近?(一)小节, 巩固相关知识点