A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
HW2_Python / 15_Factorial.py /
Code definitions
Code navigation index up-to-date
- Go to file T
- Go to line L
- Go to definition R
- Copy path
- Copy permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Cannot retrieve contributors at this time
25 lines (16 sloc) 581 Bytes
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents Copy raw contents
Copy raw contents
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Вычисление факториала числа n! Уроки программирования С++
# 15. Написать программу получающую набор произведений чисел от 1 до N. |
from itertools import accumulate |
import operator |
N = int ( input ( ‘Введите число: ‘ )) |
def get_prods ( N ): |
return list ( accumulate ([ x for x in range ( 1 , N + 1 )], operator . mul )) |
print ( get_prods ( N )) |
# Предыдущий вариант решения |
# def get_factorial_list(n): |
# fact = 1 |
# facts = [] |
# for i in range(1, n+1): |
# fact *= i |
# facts.append(fact) |
# return facts |
# print(get_factorial_list(N)) |
- Copy lines
- Copy permalink
- View git blame
- Reference in new issue
Источник: github.com
задача создать функцию , которая принимает неотрицательное число, находит его факториал и возвращает сколько нулей на конце этого факториала [закрыт]
Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются.
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.
Закрыт 1 год назад .
def factorial(n: int): a = 1 for i in range(1, n+1): a*=i return(a) def trailing_zeros(n: int) -> int: f = factorial(n) f_list=list(f) f_list.reverse() count=0 for i in range(f_list): if i ==0: count+=1 break return count
Отслеживать
задан 2 фев 2022 в 14:18
21 7 7 бронзовых знаков
и в чем вопрос?
2 фев 2022 в 14:20
Вы не приняли ни одного ответа на свои вопросы.
2 фев 2022 в 14:35
Факториал можно найти функцией factorial() из модуля math.
39 Задача: Вычислить факториал при помощи Python
Если это нельзя использовать, то просто нужно перемножить числа от 1 до n, взяв за исключение, что 0!=1. Количество нулей можно просто посчитать циклом, в чем проблема?
2 фев 2022 в 15:11
ежели вам нужен чистый питон, то так и скажите, а то другие люди стараются для вас, а вы даже не помечаете ответ как правильный
2 фев 2022 в 15:41
Вопрос в том что код не работает, задачка на степике, нужен чистый питон
2 фев 2022 в 15:45
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
Вызовем вашу функцию factorial :
factorial(1) = 1 factorial(2) = 1 factorial(3) = 1 factorial(4) = 1 factorial(5) = 1 factorial(6) = 1 factorial(7) = 1 factorial(8) = 1 factorial(9) = 1 factorial(10) = 1
Очевидно функция factorial не считает факториал. Исправим ошибку и пойдём дальше. На этот раз вычислим trailing_zeros(1) :
Traceback (most recent call last): File «/home/sv/desk/stackoverflow/temp.py», line 19, in print(f’trailing_zeros() = ‘) File «/home/sv/desk/stackoverflow/temp.py», line 9, in trailing_zeros f_list=list(f) TypeError: ‘int’ object is not iterable
Ошибка состоит в вызове функции list от числа. Это запрещено в Питоне.
Рекомендую вам запустить и привести в чувство вашу программу на компьютере прежде чем посылать в Степик на проверку.
P.S. Эта задача решается по-другому, без вычисления факториала.
Отслеживать
ответ дан 2 фев 2022 в 16:15
Stanislav Volodarskiy Stanislav Volodarskiy
26k 3 3 золотых знака 15 15 серебряных знаков 47 47 бронзовых знаков
import math n = int(input()) result = sum(n // 5**i for i in range(1, int(math.log(n, 5))+1))
Отслеживать
ответ дан 2 фев 2022 в 16:56
19.3k 5 5 золотых знаков 20 20 серебряных знаков 55 55 бронзовых знаков
Вариант 1: С использованием numpy и re.
Находим факториал и количество нулей в конце через re.search
import numpy as np import re def zeros(n: int): fact = np.math.factorial(n) return len(re.search(‘(0*)$’, str(fact)).group(0))
def end_zeros(n: int) -> int: num = np.math.factorial(n) return min((i for i,c in enumerate(str(num)[::-1], 0) if c != ‘0’), default=1)
UPD. Вариант 3 (без использования библиотек):
P.S. Пришлось зарегистрироваться на сайте и поступить на курс (Этот ответ принимает система)
def factorial(n: int): a = 1 for i in range(1, n+1): a *=i return a def trailing_zeros(n: int) -> int: list_of = list(str(factorial(n))) count = 0 for i in list_of[::-1]: if i == ‘0’: count += 1 else: break return count
UPD 2. Вариант 4. (Вообще без нахождения факториала)
Суть в том, что нам можно не находить сам факториал числа n, чтобы знать сколько там нулей.
поэтому мы можем в функцию просто передать число, от которого нужно найти факториал и получить количество нулей, что при больших числах будет намного быстрее.
def factorial(n): count = 0 while n >=5: n //= 5 count += n return count
Источник: ru.stackoverflow.com
Упражнение на Python: вычисление факториала числа
Напишите функцию Python для вычисления факториала числа (неотрицательное целое число). Функция принимает число в качестве аргумента.
Пример решения : —
Код Python:
def factorial(n): if n == 0: return 1 else: return n * factorial(n-1) n=int(input(«Input a number to compute the factiorial : «)) print(factorial(n))
Введите число для расчета факультативного: 4 24
Наглядная презентация:
Блок — схема:
Визуализируйте выполнение кода Python:
Следующий инструмент визуализирует, что компьютер делает шаг за шагом при выполнении указанной программы:
Редактор кода Python:
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Каков уровень сложности этого упражнения?
Источник: www.kodesource.top