为什么我的 try-exception-finally 无法正常工作

这是 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 相同的结果,为什么会发生这种情况?

https://img4.mukewang.com/651e7c2a0001403415830964.jpg

这是正确的解决方案:


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)

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


九州编程
浏览 88回答 2
2回答

慕尼黑的夜晚无繁华

您的print声明引发了异常。您不能使用 附加字符串和 int +。要么使用print('boom! show you my power:' + str(squ))或者print('boom! show you my power:', squ)一般来说,无类型的 except 语句是一个非常糟糕的主意。如果您改为编写except ValueError:,仅捕获尝试使用该函数将字符串转换为 int 时引发的错误int(),您将立即看到问题。

慕神8447489

在您的代码中,错误在于:print('boom! show you my power:'+squ)squ是 type int,并且您使用的+运算符的左侧是字符串,右侧是 int。要么将 int 更改为字符串,要么使用,字符。其中任何一个都可以:print('boom! show you my power:', squ)print('boom! show you my power:' + str(squ))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python