#python #python-3.x
#python #python-3.x
Вопрос:
Проблема
Вычислите и выведите факториал заданного положительного целого числа. Целое число может быть таким же большим, как 100
.
Мои усилия
Я пробовал решения на других компиляторах, они отлично работают на других компиляторах, но на 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)
Любая помощь будет оценена
Ответ №1:
Это решение отлично работает для Python 2 — я запустил ваш код на Hackerrank, и он прошел все тестовые примеры.
Итак, ошибка компиляции отображается, если код скомпилирован с помощью Python 3.
нет = int(raw_input())
Ошибка имени: имя ‘raw_input’ не определено
Это верно, потому raw_input
что должно быть заменено на input()
в Python 3.
Если код с исправлением выполняется после этого, возникает другая проблема:
печать fac(нет)
^
Ошибка синтаксиса: недопустимый синтаксис
Опять же, просто добавьте круглые скобки fac(no)
, а затем код компилируется и проходит все тесты:
Итак, полный код приведен ниже:
def fac(n):
return 1 if (n < 1) else n * fac(n-1)
no = int(input())
print (fac(no))