HackerRank Python编译错误递归因子

时间:2016-10-10 18:34:13

标签: python

我在其他编译器上尝试过解决方案,但它们在其他编译器上工作正常,但是对于hackerrank来说,它没有工作说编译时错误

# Enter your code here. Read input from STDIN. Print output to STDOUT
def fac(n):
    return 1 if (n < 1) else n * fac(n-1)

no = int(raw_input())
print fac(no)

Link to the code copy

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

该解决方案在 Python 2 上很好用-我在 Hackerrank 上运行了您的代码,并通过了所有测试用例。

因此,如果使用 Python 3 编译代码,则会显示编译错误。

  

no = int(raw_input())

     

NameError:未定义名称“ raw_input”

是真的,因为在 Python 3 中必须将raw_input替换为input()

如果随后执行了具有更正的代码,则存在另一个问题:

  

打印事实(否)

     

^

     

SyntaxError:语法无效

再次,只需在fac(no)周围加上大括号,然后代码编译并通过所有测试:

因此,完整的代码如下:

def fac(n):
    return 1 if (n < 1) else n * fac(n-1)

no = int(input())
print (fac(no))