2014 dxdy logo

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

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




 
 python для начинающих
Сообщение27.01.2010, 19:15 
Аватара пользователя
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 
Таня Тайс в сообщении #284046 писал(а):
Что я делаю не так? :oops:

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

 
 
 
 Re: python для начинающих
Сообщение27.01.2010, 19:31 
В Питоне бесконечно важны отступы.
В Вашем коде для функции fib строка
Код:
a, b = b, a+b
съехала влево, поэтому интерпретатор рассматривает её не как часть функции, а как отдельно стоящий оператор.
Сдвиньте эту строчку на две табуляции вправо.

 
 
 
 Re: python для начинающих
Сообщение27.01.2010, 19:38 
Аватара пользователя
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 
Таня Тайс в сообщении #284051 писал(а):
Следующая проблема с matplotlib

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

 
 
 
 Re: python для начинающих
Сообщение28.01.2010, 01:02 
Таня Тайс в сообщении #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 
На всякий случай проверил под Убунтой:
Ubuntu 9.04
Python 2.6.2
numpy 1.2.1
matplotlib 0.98.5.2

Работает.

 
 
 
 Re: python для начинающих
Сообщение28.01.2010, 12:58 
Аватара пользователя
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 
Аватара пользователя
Спасибо, теперь всё работает!!!

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

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group