Найти - Пользователи
Полная версия: Помогите решить контрольную
Начало » Центр помощи » Помогите решить контрольную
1 2
tarantul
1. Имеются две ёмкости: кубическая с ребром А, цилиндрическая с высотой Н и радиусом основания R. Определить поместится ли жидкость объёма М в первую ёмкость, во вторую, в обе.

2. Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер. Дан номер единицы массы и масса тела M в этих единицах (вещественное число). Вывести массу данного тела в килограммах.

3. Дан одномерный массив числовых значений, насчитывающий N элементов. Исключить все нулевые элементы.

4. Описать функцию Fact(N) целого типа, вычисляющую значение факториала N! = 1•2•…•N (N > 0 — параметр целого типа). С помощью этой функции вычислить факториалы 10 данных чисел.
py.user.next
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
4. Описать функцию Fact(N) целого типа
есть math.factorial()
magnet85
py.user.next
есть math.factorial()
Преподаватели такое не оценят, из вики:
def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x - 1)
py.user.next
magnet85
Преподаватели такое не оценят, из вики:
вычисли 1000!
baa
def fact(x):
f = 1
while x:
f *= x
x -= 1
return f
print Fact(1000) # time 0.00179004669189
FishHook
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
0.000919103622437
0.00028395652771
0.000602006912231
0.000395059585571
0.000457048416138
0.000217914581299
0.000236034393311
0.000325918197632
0.000741004943848

то есть наименьшее время дает
def fact5(x):
f=1
for i in xrange(1,x+1):
f=f*i
return f
что очень близко к math.factorial()
py.user.next
FishHook
t1=time.timer()
factorial(value)
t2=time.timer()-t1
странное применение timeit
там же есть специальные методы, открой help(timeit)
FishHook
py.user.next
FishHook
t1=time.timer()
factorial(value)
t2=time.timer()-t1
странное применение timeit
там же есть специальные методы, открой help(timeit)
Зато наглядно и понятно
py.user.next
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]
>>>
Isem
py.user.next
вычисли 1000!
А почему не 1000000! ?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB