def sum_all(n):
number = input("number pls ")
if n > 1:
return n + sum_all(n-1)
elif n == 1:
return 1
else:
raise Exception("negative number")
print(sum_all(number))
我无法弄清楚如何让我接受我在python 3中输入数字
答案 0 :(得分:1)
您不在方法的任何位置使用数字变量。我想你想要做的就是这样>
def sum_all(n):
if n > 1:
return n + sum_all(n-1)
elif n == 1:
return 1
else:
raise Exception("negative number")
number = int(input("number pls "))
print(sum_all(number))
答案 1 :(得分:1)
目前正在发生的事情是被称为sum_all(number)
的第一件事。 number
中的值将作为参数sum_all
传递到n
。但是,number
未在函数sum_all
之外定义,因此代码将抛出类似于以下内容的错误:
NameError: name 'number' is not defined
现在,问题变成了你真正想做的事情?您想继续获取用户输入并将这些输入添加到一起吗?如果是这种情况,那么你不需要递归。你可以使用一个简单的循环。
如果你想获得一次输入然后获得该输入的总和,那么你需要递归。但是如果您只需要输入一次 - 那么您应该只调用一次 - 而不是每次都通过该功能。让我们通过调用sum_all(5)
:
sum_all(5):
| sum_all(4):
| | sum_all(3):
| | | sum_all(2):
| | | | sum_all(1):
| | | | | return 1
| | | | return 2 + 1
| | | return 3 + 3
| | return 4 + 6
| return 5 + 10
这表示输入5
,sum_all
会返回15
。如果您打算这样做,那么您应该只在函数input
之外获取sum_all
一次,并将用户输入的值传递给sum_all
。