Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 23, 2016 19:30:12

Qwerty16
Зарегистрирован: 2016-03-20
Сообщения: 38
Репутация: +  -1  -
Профиль   Отправить e-mail  

Не могу понять что неправильно

def time_test(n):
    def bs1(a):
        for i in reversed(range(len(a) + 1)):
            f = True
            for j in range(i - 1):
                if a[j] > a[j + 1]:
                    t = a[j]
                    a[j] = a[j + 1]
                    a[j + 1] = t
                    f = False
            if f:
                break
        return a
    import timeit
    import random
    a = [0] * n
    m = n
    for i in range(n):
        a[i] = random.randint(0,m)
    b = a.copy()
    data = b
    z1 = timeit.timeit("bs1(data)", setup="from __main__ import bs1, data", number=1)
    return z1

>>> import time_tessss as p
>>> p.time_test(10)
Traceback (most recent call last):
File “<pyshell#1>”, line 1, in <module>
p.time_test(10)
File “CUsers/Bodanich/Desktop/python test2\time_tessss.py”, line 23, in time_test
z1 = timeit.timeit(“bs1(data)”, setup=“from __main__ import bs1, data”, number=1)
File “C:\Program Files\Python 3.5\lib\timeit.py”, line 213, in timeit
return Timer(stmt, setup, timer, globals).timeit(number)
File “C:\Program Files\Python 3.5\lib\timeit.py”, line 178, in timeit
timing = self.inner(it, self.timer)
File “<timeit-src>”, line 3, in inner
ImportError: cannot import name ‘bs1’
>>>

Вот выдает ошибку

Офлайн

#2 Апрель 23, 2016 19:48:40

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

Не могу понять что неправильно

bs1 - это замыкание, функция, которая существует в области видимости time_test, а вы пытаетесь импортировать её из __main__, где её разумеется нет.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version