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
添加回答
举报