2 回答

TA貢獻1828條經驗 獲得超13個贊
您收到此錯誤的原因是因為有一種情況,您將其拖到程序末尾,
sum(inp_1,inp_2)
沒有實際定義 inp_1 或 inp_2。這是因為當您點擊“除外”時,您又在運行該程序。這不會“殺死”失敗的程序,它只是啟動它的另一個實例。當該實例完成時,第一個實例也想結束,但正如我們之前提到的,它缺少一個變量,因此會引發錯誤。見堆棧;
考慮一下食堂里盤子疊在一起的例子。位于頂部的板是第一個被移除的板,即已放置在最底部位置的板在堆疊中保留的時間最長......
雖然最后一個“盤子”留在堆棧中的時間最長,但它仍然需要脫落。在我們的例子中,“最后一個盤子”是 app_sum() 的實例,它有錯誤的輸入。當它離開堆棧時,它會為您提供您在帖子中包含的錯誤。
試試這個:
def sum(num_1, num_2):
sum_total = num_1 + num_2
print('The answer is:',sum_total)
return sum_total
def app_sum():
while True:
try:
inp_1 = int(input('Number 1?: '))
inp_2 = int(input('Number 2?: '))
break
except ValueError:
print('Invalid input, try again')
sum(inp_1, inp_2)
app_sum()
輸出如下所示:
root@alarmux:/home/abdmin/python# ./test.py
Number 1?: 1
Number 2?: 2
The answer is: 3
root@alarmux:/home/abdmin/python# ./test.py
Number 1?: a
Invalid input, try again
Number 1?: 2
Number 2?: 3
The answer is: 5

TA貢獻1884條經驗 獲得超4個贊
您可以重復直到給出有效答案,而不是遞歸:
def sum(num_1, num_2):
sum_total = num_1 + num_2
print('The answer is:',sum_total)
return sum_total
def app_sum():
inp_1 = None
while inp_1 is None:
try:
inp_1 = int(input('Number 1?: '))
except ValueError:
print('Invalid input, try again')
inp_2 = None
while inp_2 is None:
try:
inp_2 = int(input('Number 2?: '))
except ValueError:
print('Invalid input, try again')
sum(inp_1,inp_2)
app_sum()
示例輸出:
Number 1?: fjksdfsdflkj
Invalid input, try again
Number 1?: 3
Number 2?: fds
Invalid input, try again
Number 2?: 4
The answer is: 7
添加回答
舉報