def Factorial(n):
n=int(input("Input a number?"))
if n==0:
return 1
else:
return n * Factorial(n-1)
def Fibonacci(num):
i=0
present=1
previous=0
while i<=num:
nextterm=present+previous
present=previous
previous=nextterm
i=i+1
print("The fibonacci number for", i, "is", nextterm)
def CallFibOrFac(s):
s=input('Fib or Fac?')
if s == 'Fib':
num=input('Up to what number?')
print(Fibonacci(num))
elif s == 'Fac':
n=input('What number?')
print(Factorial(n))
CallFibOrFac()
我花了很多时间试图解决这个问题。我不明白我应该如何定义我的函数CallFibOrFac调用另外两个函数来解决Fibonacci或Factorial数。任何帮助/解释表示赞赏。谢谢!
这是我在课堂上留下的确切提示:
编写一个包含3个函数的Python程序:
第一个函数将被称为CallFibOrFac
它会收到一个字符串作为参数。
如果字符串是&#34; Fib&#34;它将调用第二个函数调用 斐波那契
如果字符串是&#34; Fac&#34;它将调用第三个函数调用 阶乘。
第二个函数打印Fibonacci中的前10个数字 序列
第三个函数打印10阶乘的值。
我们希望使第二和第三功能适用于其他情况 而不只是前10个数字,所以添加一个参数到斐波那契 函数和阶乘函数将告诉它要走多远 沿斐波那契序列或因子。
答案 0 :(得分:3)
您的代码有一些错误:
CallFibOrFac
函数收到一个字符串但会覆盖它。任务说它只会传递字符串,按照给定的方式使用它; 那就是说,所有纠正的功能应该是:
析因函数:
def Factorial(n):
# Removed the input read
if n==0:
return 1
else:
return n * Factorial(n-1)
Fibonacci功能:
# It is working as expected
def Fibonacci(num):
i=0
present=1
previous=0
while i<=num:
nextterm=present+previous
present=previous
previous=nextterm
i=i+1
print("The fibonacci number for", i, "is", nextterm)
CallFibOrFac
def CallFibOrFac(s):
# Moved the number detection out of the ifs, since both will use it
# Note that the task says it will _receive_ the string as parameter, so you don't need to ask here.
num=int(input('Up to what number?'))
if s == 'Fib':
print(Fibonacci(num))
elif s == 'Fac':
print(Factorial(num))
注意:还有一些东西需要修复和/或改进,我刚刚处理过这个问题(正如@abarnert所说)
答案 1 :(得分:-1)
您定义CallFibOrFac
以获取输入,但是当您在底部运行它时,您不会给它一个。将函数定义为def CallFibOrFac()
,或在运行时为其提供字符串输入。通过询问带有input
的字符串序列来编写脚本的方式意味着您在函数的定义中不需要s。当我摆脱定义中的s时,脚本运行对我很好,但请记住,你需要回复&#39; Fib&#39;或者&#39; Fac&#39;用标记来声明它们是字符串
此外,将来如果您发布了收到的错误消息
将会很有帮助答案 2 :(得分:-2)
试试这个:
def Factorial(n):
n=int(input("Input a number?"))
if n==0:
return 1
else:
return n * Factorial(n-1)
def Fibonacci(num):
i=0
present=1
previous=0
while i<=num:
nextterm=present+previous
present=previous
previous=nextterm
i=i+1
print("The fibonacci number for", i, "is", nextterm)
def CallFibOrFac():
s=input('Fib or Fac?')
if s == 'Fib':
num=input('Up to what number?')
print(Fibonacci(int(num)))
elif s == 'Fac':
n=input('What number?')
print(Factorial(int(n)))
CallFibOrFac()