這是 udemy 的作業(yè),我的解決方案無法工作,問題如下:編寫一個函數(shù),要求輸入一個整數(shù)并打印它的平方。使用帶有 try、 except、 else 塊的 while 循環(huán)來解決不正確的輸入。 這是我的解決方案: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 相同的結(jié)果,為什么會發(fā)生這種情況?這是正確的解決方案: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條經(jīng)驗 獲得超6個贊
您的print
聲明引發(fā)了異常。您不能使用 附加字符串和 int +
。要么使用
print('boom! show you my power:' + str(squ))
或者
print('boom! show you my power:', squ)
一般來說,無類型的 except 語句是一個非常糟糕的主意。如果您改為編寫except ValueError:
,僅捕獲嘗試使用該函數(shù)將字符串轉(zhuǎn)換為 int 時引發(fā)的錯誤int()
,您將立即看到問題。

慕神8447489
TA貢獻1780條經(jīng)驗 獲得超1個贊
在您的代碼中,錯誤在于:
print('boom! show you my power:'+squ)
squ是 type int,并且您使用的+運算符的左側(cè)是字符串,右側(cè)是 int。要么將 int 更改為字符串,要么使用,字符。其中任何一個都可以:
print('boom! show you my power:', squ)
print('boom! show you my power:' + str(squ))
添加回答
舉報
0/150
提交
取消