【问题标题】:Why my try-exception-finally cant work properly为什么我的 try-exception-finally 无法正常工作
【发布时间】:2020-10-04 04:35:28
【问题描述】:

这是 udemy 的作业,我的解决方案不起作用,这是问题:

编写一个函数,请求一个整数并打印它的平方。使用带有 try, except, else 块的 while 循环来解决输入错误。 这是我的解决方案:

def ask():
    while True:
        try:
            user_input = int(input('give me int energe:'))
            squ = user_input**2
            print('boom! show you my power:'+squ)
        except:
            print('lack of int energe')
            continue
        else:
            print('Gotcha')
            break
        finally:
            print('boooooom')
        
    pass

如果我输入str,异常运行良好但即使我输入一个int也显示与str相同的结果,为什么会发生这种情况?

这是正确的解决方案:

def ask():
    
    while True:
        try:
            n = int(input('Input an integer: '))
        except:
            print('An error occurred! Please try again!')
            continue
        else:
            break
            
        
    print('Thank you, your number squared is: ',n**2)

我不知道为什么我的尝试不能顺利进行

【问题讨论】:

    标签: python error-handling


    【解决方案1】:

    您的print 语句正在引发异常。不能使用 + 附加字符串和 int。要么使用

    print('boom! show you my power:' + str(squ))
    

    print('boom! show you my power:', squ)
    

    一般来说,无类型的 except 语句是一个非常糟糕的主意。如果您改为编写 except ValueError:,仅捕获尝试使用 int() 函数将字符串转换为 int 时引发的错误,您会立即看到问题。

    【讨论】:

    • 非常感谢:)
    【解决方案2】:

    在你的代码中,错误在于:

    print('boom! show you my power:'+squ)
    

    squint 类型,并且您正在使用 + 运算符,其中左侧有一个字符串,右侧有一个 int。要么将 int 更改为字符串,要么使用 , 字符。这些都可以工作:

    print('boom! show you my power:', squ)
    
    print('boom! show you my power:' + str(squ))
    

    【讨论】:

      猜你喜欢
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多