Не удается найти факториал числа

Учу Python. Решаю задачу, в которой нужно позволить пользователю ввести неотрицательное целое значение, затем применить цикл для вычисления факториала этого числа и вывести его на экран. Но на последней строке срабатывает SyntaxError.

Код:

num = int(input('Введите неотрицательное целое число: '))
while num <= 0 or num % 1 != 0:
    print('Ошибка')
    num = int(input('Введите неотрицательное целое число: '))
for x in range(num):
    fact = num * (num - (num- (x+1))
    print(fact)

Лог:

File "<ipython-input-7-6d70e7b9ea80>", line 7
    print(fact)
    ^
SyntaxError: invalid syntax

Ответы (4 шт):

Автор решения: Вадим Александру
num = int(input('Введите неотрицательное целое число: '))
while num <= 0 or num % 1 != 0:
    print('Ошибка')
    num = int(input('Введите неотрицательное целое число: '))
for x in range(num):
    fact = num * (num - (num - x)) # скобку забыли :D
print(fact)

А так то не понимаю зачем вы x + 1 в выражении используете

→ Ссылка
Автор решения: Руслан Дегтярев

Понял ошибки:

  • забыл скобку

  • формулу факториала вобще не нужно было использовать. Все сделал через введение накопителя с изначальным значением 1.0:

      num = int(input('Введите неотрицательное целое число: '))
      while num <= 0 or num % 1 != 0:
          print('Ошибка')
          num = int(input('Введите неотрицательное целое число: '))
      total = 1.0
      for x in range(num):
          total *= (x+1)
      print(total)
    
→ Ссылка
Автор решения: n1tr0xs
num = int(input('Введите неотрицательное целое число: '))
while num < 0:
  print('Ошибка')
  num = int(input('Введите неотрицательное целое число: '))
fact = 1
for x in range(2, num+1):
  fact *= x
print(fact)
→ Ссылка
Автор решения: Иван Русанов

Тоже начал учить Python. У меня такая же задача. Получилось вот так.

    def factorial(charge):
    asd = []
    i = 0
    for i in range(2, charge + 1):
        for j in range(1, i):
            i *= j
            j += 1
        asd.append(i)
    print(charge, '!=', i)
    print(charge, '!=', asd)  
    return asd

chislo = int(input('Введите неотрицательное целое число: '))
if chislo <= 0 or chislo % 1 != 0:
    print('Ошибка!')
else:
    factorial(chislo)
→ Ссылка