这是 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()
,您将立即看到问题。
慕神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))
添加回答
举报
0/150
提交
取消