2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 python для начинающих
Сообщение27.01.2010, 19:15 
Аватара пользователя


19/03/07
597
Bielefeld
chainreaction в сообщении #250499 писал(а):
Осмелюсь предложить Python.
Это с одной стороны ОО язык программирования, а с другой, при подключении расширений NumPy + SciPy + MatplotLib неплохой открытый аналог Octave/Scilab.
После подключения SymPy превращается в аналог Maxima/Maple.
Имеет модуль с интерфейсом к Gnuplot, MayaVi, OpenDX и др.

Я подключила все эти расширения, нашла туториал по Python'у и сразу же столкнулась с трудностями - простой примерчик у меня не работает :cry:
Эта программка сохранена как fibo.py:
Код:
def fib(n):
   a , b = 0, 1
   while b < n:
       print b,
a, b = b, a+b

def fib2(n):
   result = []
   a, b = 0, 1
   while b < n:
        result.append(b)
        a, b = b, a+b
   return result

Скопировано отсюдаhttp://docs.python.org/tutorial/modules.html
Далее веду себя, как там написано, то есть
Код:
$ python
Python 2.5.2 (r252:60911, Jan 20 2010, 21:48:48)
[GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import fibo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "fibo.py", line 5, in <module>
    a, b = b, a+b
NameError: name 'b' is not defined
>>>

Что я делаю не так? :oops:

 Профиль  
                  
 
 Re: python для начинающих
Сообщение27.01.2010, 19:31 
Заслуженный участник


19/07/08
1266
Таня Тайс в сообщении #284046 писал(а):
Что я делаю не так? :oops:

Измените отступ в этой строчке на правильный.

 Профиль  
                  
 
 Re: python для начинающих
Сообщение27.01.2010, 19:31 
Заслуженный участник


09/08/09
3438
С.Петербург
В Питоне бесконечно важны отступы.
В Вашем коде для функции fib строка
Код:
a, b = b, a+b
съехала влево, поэтому интерпретатор рассматривает её не как часть функции, а как отдельно стоящий оператор.
Сдвиньте эту строчку на две табуляции вправо.

 Профиль  
                  
 
 Re: python для начинающих
Сообщение27.01.2010, 19:38 
Аватара пользователя


19/03/07
597
Bielefeld
nestoklon
Maslov
Низкий поклон Вам и огромное спасибо!!!

-- Ср янв 27, 2010 18:53:46 --

Позвольте мне задать ещё один вопрос на ту же тему.

Следующая проблема с matplotlib
Код, взятый с http://matplotlib.sourceforge.net/, выглядит так
Код:
>>> from pylab import randn, hist
>>> x = randn(10000)
>>> hist(x, 100)

должен выдавать гистограмму, а не сообщение об ошибке
Код:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.5/site-packages/matplotlib/pyplot.py", line 1633, in hist
    ret =  gca().hist(*args, **kwargs)
  File "/usr/lib/python2.5/site-packages/matplotlib/axes.py", line 5060, in hist
    align=align, log=log)
  File "/usr/lib/python2.5/site-packages/matplotlib/axes.py", line 3253, in bar
    assert len(height)==nbars, "argument 'height' must be %d or scalar" % nbars
AssertionError: argument 'height' must be 101 or scalar

:oops:

Тоже самое для ipython
Код:
~$ ipython -pylab
Python 2.5.2 (r252:60911, Jan 20 2010, 21:48:48)


In [1]: x = randn(10000)

In [2]: hist(x, 100)

выдаёт ту же ошибку
Код:
AssertionError: argument 'height' must be 101 or scalar

А здесь всё вроде также http://matplotlib.sourceforge.net/users/installing.html
:oops:

 Профиль  
                  
 
 Re: python для начинающих
Сообщение27.01.2010, 23:13 
Заслуженный участник


19/07/08
1266
Таня Тайс в сообщении #284051 писал(а):
Следующая проблема с matplotlib

У меня работает (питон 2.6.4). Возможно, несогласованы версии питона и matplotlib?
Или в версии 2.5 что-то немного по-другому? Как вариант, надо явно называть параметр, который равен 100. Похоже, он у вас пытается задать не тот параметр, который вы хотите чтобы он задал.

 Профиль  
                  
 
 Re: python для начинающих
Сообщение28.01.2010, 01:02 
Заслуженный участник


09/08/09
3438
С.Петербург
Таня Тайс в сообщении #284051 писал(а):
Следующая проблема с matplotlib
В 2.6.2.2 под Windows тоже всё работает.

А какая версия matplotlib у Вас установлена?
Вот так можно посмотреть:
Код:
C:>python
ActivePython 2.6.2.2 (ActiveState Software Inc.) based on
Python 2.6.2 (r262:71600, Apr 21 2009, 15:05:37) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pylab import *
>>> print matplotlib.__version__
0.99.1
>>> ^Z

 Профиль  
                  
 
 Re: python для начинающих
Сообщение28.01.2010, 02:06 
Заслуженный участник


09/08/09
3438
С.Петербург
На всякий случай проверил под Убунтой:
Ubuntu 9.04
Python 2.6.2
numpy 1.2.1
matplotlib 0.98.5.2

Работает.

 Профиль  
                  
 
 Re: python для начинающих
Сообщение28.01.2010, 12:58 
Аватара пользователя


19/03/07
597
Bielefeld
Maslov в сообщении #284106 писал(а):
А какая версия matplotlib у Вас установлена?

Код:
$ python
Python 2.5.2 (r252:60911, Jan 20 2010, 21:48:48)
[GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pylab import *
>>> print matplotlib.__version__
0.91.2
>>>


Спасибо за отклик! Будем искать...

-- Чт янв 28, 2010 12:08:47 --

Похоже, что у меня действительно версии несогласованы или слишком старая версия matplotlib...
Я инсталлировала так
Код:
sudo apt-get install libpng-dev
sudo apt-get build-dep matplotlib
sudo apt-get install python-matplotlib

Сейчас скачала версию matplotlib 0.99.1.1, но не могу инсталлировать
Код:
src/_png.cpp:293: error: ‘png_infopp_NULL’ was not declared in this scope
error: command 'gcc' failed with exit status 1

 Профиль  
                  
 
 Re: python для начинающих
Сообщение28.01.2010, 16:45 
Аватара пользователя


19/03/07
597
Bielefeld
Спасибо, теперь всё работает!!!

Пришлось убрать старую версию matplotlib 0.91.2 и поставить более новую 0.99.1.1
Теперь и у меня работает. :D

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group