Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 23, 2011 20:36:28

tarantul
От:
Зарегистрирован: 2011-12-23
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите решить контрольную

1. Имеются две ёмкости: кубическая с ребром А, цилиндрическая с высотой Н и радиусом основания R. Определить поместится ли жидкость объёма М в первую ёмкость, во вторую, в обе.

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

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

4. Описать функцию Fact(N) целого типа, вычисляющую значение факториала N! = 1•2•…•N (N > 0 — параметр целого типа). С помощью этой функции вычислить факториалы 10 данных чисел.



Офлайн

#2 Дек. 24, 2011 03:51:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Помогите решить контрольную

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()



Отредактировано (Дек. 24, 2011 03:53:47)

Офлайн

#3 Дек. 24, 2011 07:14:27

magnet85
От:
Зарегистрирован: 2009-04-13
Сообщения: 91
Репутация: +  2  -
Профиль   Отправить e-mail  

Помогите решить контрольную

py.user.next
есть math.factorial()
Преподаватели такое не оценят, из вики:
def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x - 1)



Офлайн

#4 Дек. 25, 2011 06:50:32

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Помогите решить контрольную

magnet85
Преподаватели такое не оценят, из вики:
вычисли 1000!



Офлайн

#5 Янв. 6, 2012 07:07:58

baa
От:
Зарегистрирован: 2011-11-25
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите решить контрольную

def fact(x):
f = 1
while x:
f *= x
x -= 1
return f
print Fact(1000) # time 0.00179004669189



Отредактировано (Янв. 6, 2012 07:13:47)

Офлайн

#6 Янв. 13, 2012 05:44:14

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите решить контрольную

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()



Офлайн

#7 Янв. 16, 2012 23:46:34

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Помогите решить контрольную

FishHook
t1=time.timer()
factorial(value)
t2=time.timer()-t1
странное применение timeit
там же есть специальные методы, открой help(timeit)



Офлайн

#8 Янв. 17, 2012 05:09:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите решить контрольную

py.user.next
FishHook
t1=time.timer()
factorial(value)
t2=time.timer()-t1
странное применение timeit
там же есть специальные методы, открой help(timeit)
Зато наглядно и понятно



Офлайн

#9 Янв. 17, 2012 07:50:33

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Помогите решить контрольную

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)

Офлайн

#10 Янв. 17, 2012 16:22:49

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Помогите решить контрольную

py.user.next
вычисли 1000!
А почему не 1000000! ?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version