Форум сайта python.su
1. Имеются две ёмкости: кубическая с ребром А, цилиндрическая с высотой Н и радиусом основания R. Определить поместится ли жидкость объёма М в первую ёмкость, во вторую, в обе.
2. Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер. Дан номер единицы массы и масса тела M в этих единицах (вещественное число). Вывести массу данного тела в килограммах.
3. Дан одномерный массив числовых значений, насчитывающий N элементов. Исключить все нулевые элементы.
4. Описать функцию Fact(N) целого типа, вычисляющую значение факториала N! = 1•2•…•N (N > 0 — параметр целого типа). С помощью этой функции вычислить факториалы 10 данных чисел.
Офлайн
tarantul
3. Дан одномерный массив числовых значений, насчитывающий N элементов. Исключить все нулевые элементы.
>>> lst = [1.5, 2.7, 3.4, 0, 1.5, 1.8, 0]
>>> [i for i in lst if i != 0]
[1.5, 2.7, 3.4, 1.5, 1.8]
>>>
tarantulесть math.factorial()
4. Описать функцию Fact(N) целого типа
Отредактировано (Дек. 24, 2011 03:53:47)
Офлайн
py.user.nextПреподаватели такое не оценят, из вики:
есть math.factorial()
def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x - 1)
Офлайн
magnet85вычисли 1000!
Преподаватели такое не оценят, из вики:
Офлайн
def fact(x):
f = 1
while x:
f *= x
x -= 1
return f
print Fact(1000) # time 0.00179004669189
Отредактировано (Янв. 6, 2012 07:13:47)
Офлайн
baa, не оптимально
from timeit import Timer
time=Timer()
value=500
def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x - 1)
t1=time.timer()
factorial(value)
t2=time.timer()-t1
print t2
def fact(x):
f = 1
while x:
f *= x
x -= 1
return f
t1=time.timer()
fact(value)
t2=time.timer()-t1
print t2
fuct2=lambda x:reduce(lambda i,j:i*j, range(1,x+1))
t1=time.timer()
fuct2(value)
t2=time.timer()-t1
print t2
def fact3(x):
f = 1
l=range(x+1)
while l:
f*= l.pop()
return f
t1=time.timer()
fact3(value)
t2=time.timer()-t1
print t2
fuct4=lambda x:x*fuct4(x-1) if x!=1 else 1
t1=time.timer()
fuct4(value)
t2=time.timer()-t1
print t2
import math
t1=time.timer()
math.factorial(value)
t2=time.timer()-t1
print t2
def fact5(x):
f=1
for i in xrange(1,x+1):
f=f*i
return f
t1=time.timer()
fact5(value)
t2=time.timer()-t1
print t2
from itertools import count
c=count(1)
def fact6(x):
f=1
foo=1
while foo<x:
foo=c.next()
f=f*foo
return f
t1=time.timer()
fact6(value)
t2=time.timer()-t1
print t2
def fact7(x,acc=1):
if not x: return acc
return fact7(x-1,acc*x)
t1=time.timer()
fact7(value)
t2=time.timer()-t1
print t2
def fact5(x):
f=1
for i in xrange(1,x+1):
f=f*i
return f
Офлайн
FishHookстранное применение timeitt1=time.timer()
factorial(value)
t2=time.timer()-t1
Офлайн
py.user.nextЗато наглядно и понятноFishHookстранное применение timeitt1=time.timer()
factorial(value)
t2=time.timer()-t1
там же есть специальные методы, открой help(timeit)
Офлайн
FishHookпо-нормальному гораздо нагляднее и понятнее
Зато наглядно и понятно
>>> import timeit
>>> def f():
... list(range(1000000))
...
>>> t = timeit.Timer('f()', 'from __main__ import f')
>>> t.timeit(100)
3.3808891773223877
>>> t.repeat(3, 100)
[3.352781057357788, 3.332251787185669, 3.330061912536621]
>>>
Отредактировано (Янв. 17, 2012 07:50:52)
Офлайн
py.user.nextА почему не 1000000! ?
вычисли 1000!
Офлайн