为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

九州编程 2023-10-05 17:03:31
这是 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)我不知道为什么我的尝试进展不顺利
查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

您的print声明引发了异常。您不能使用 附加字符串和 int +。要么使用

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

或者

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

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


查看完整回答
反对 回复 2023-10-05
?
慕神8447489

TA贡献1780条经验 获得超1个赞

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


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))


查看完整回答
反对 回复 2023-10-05
  • 2 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信