我是Python新手。我一直在努力使自己熟悉Numpy,Scipy和Matplotlib,因爲我有科學背景,並且希望讓自己成爲神經科學實驗室工作中更有競爭力的候選人。Python中的函數2.7 vs 3.x
我一直在瀏覽Matplotlib文檔,試圖通過示例來學習。我將參考以下URL中的示例:http://matplotlib.org/users/pyplot_tutorial.html
我感覺這些示例是用Python 3.x編寫的,而且由於我使用的是Python 2.7而遇到了問題。我使用2.7,因爲我想要的某些庫不適用於3.x.
該網站給出了一個使用子圖的例子。他們的代碼如下:
import numpy as np
import matplotlib.pyplot as plt
def f(t):
return np.exp(-t) * np.cos(2*np.pi*t)
t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)
plt.figure(1)
plt.subplot(211)
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')
plt.subplot(212)
plt.plot(t2, np.cos(2*np.pi*t2), 'r--')
這應該返回這樣一個圖:http://i.stack.imgur.com/ejNDu.png
當我複製相同的代碼進入IDLE,它給了我一個錯誤。在線
t1 = np.arange(0.0, 5.0, 0.1)
,IDLE告訴我「t1」是無效的語法。
我的第一個問題:使用t1作爲變量有什麼問題?
如果我複製類似的代碼,但有一些東西調整,我可以避免這個錯誤。但是,然後我又出現了另一個錯誤。當我行相當於增加
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')
,IDLE送給我的錯誤:
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
plt.plot(ty, f(tx), 'bo', ty, f(ty), 'k')
NameError: name 'f' is not defined
我不知道Python的希望我定義的 「F」 分開來自函數「f(t)」。
我的第二個和主要問題:有人請解釋爲什麼「f」必須單獨定義?如何在Python 2.7中正確使用這樣的函數?
如果有人需要我解釋這裏使用的Numpy/Matplotlib機制,我將盡我所能解釋它們如何工作來實現圖形。
你粘貼的代碼在Python 2.7中對我很好。你確定你沒有犯一些小錯誤嗎?有時候捨棄括號或類似的東西可能會在程序後面導致令人費解的語法錯誤。另外,你如何將代碼輸入IDLE?我不認爲你可以將多行代碼片段直接粘貼到IDLE中。您是否嘗試使用這些命令創建文件,然後運行它? – BrenBarn 2013-03-15 06:04:52