Python:一场从零开始的奇妙旅程
拜smtmobly赐教,从http://www.pythonxy.com/下载了pythonxy套件,开始了新的学习,我将在这个帖子里记录学习python的点点滴滴,包括转帖从别处得来的讯息。从零开始,学习新知!
=================联动帖=====================
关于OOP中若干特性的思考
http://forum.vibunion.com/thread-97114-1-1.html
==============第一阶段:熟悉环境================
问题零:从哪里入门?
简明Python教程
http://woodpecker.org.cn/abyteofpython_cn/chinese/
问题一:在哪里编写和执行代码?
暂时使用IDLE,因为有语法高亮,也且和MATLAB很像。既可以在解释器中输入单行命令,又何以编辑脚本文件整体运行。
问题二:在哪里获取帮助信息?
Help()命令
问题三:Hello World程序
print 'Hello World'
问题四:求两个整数的最大公约数和最小公倍数
# -*- coding: cp936 -*-
#求两个整数的最大公约数和最小公倍数
#范雨,20101102
m = mi = int(raw_input(u'输入一个整数:'));
n = ni = int(raw_input(u'再输入一个整数:'));
#确保m>=n
if m < n:
t = m;
m = n;
n = t;
#循环比较
while True:
t = m%n;
if t == 0:
break;
m = n;
n = t;
#输出结果
print mi, '和', ni ,"的最大公约数为:",n
print mi, '和', ni ,"的最小公倍数为:",mi*ni/n
这个例子可以练习IO输入、字符串的定义、条件和循环的使用,以及python特有的,以缩进表示代码块的特点。
运行结果为
>>>
输入一个整数:24
再输入一个整数:100
24 和 100 的最大公约数为: 4
24 和 100 的最小公倍数为: 600
>>>
问题五:如何使用函数?(将问题四的代码重构为函数)
# -*- coding: cp936 -*-
#求两个整数的最大公约数和最小公倍数
#范雨,20101102
def Calcu(m,n):
u'''计算两个整数的最大公约数和最小公倍数
这两个数必须是正整数!'''
#确保m>=n
if m < n:
t = m;
m = n;
n = t;
#循环比较
while True:
t = m%n;
if t == 0:
break;
m = n;
n = t;
#
return n;
mi = int(raw_input(u'输入一个整数:'));
ni = int(raw_input(u'再输入一个整数:'));
#输出结果
k = Calcu(mi,ni);
print mi, '和', ni ,"的最大公约数为:",k
print mi, '和', ni ,"的最小公倍数为:",mi*ni/k
这个例子可以练习函数值的返回方式、局部变量、DocStrings、等特性
问题六:如何定义和使用模块
# -*- coding: cp936 -*-
#求两个整数的最大公约数和最小公倍数
#范雨,20101102
def Calcu(m,n):
u'''计算两个整数的最大公约数和最小公倍数
这两个数必须是正整数!'''
#确保m>=n
if m < n:
t = m;
m = n;
n = t;
#循环比较
while True:
t = m%n;
if t == 0:
break;
m = n;
n = t;
#
return n;
if __name__ == '__main__':
mi = int(raw_input(u'输入一个整数:'));
ni = int(raw_input(u'再输入一个整数:'));
#输出结果
k = Calcu(mi,ni);
print mi, '和', ni ,"的最大公约数为:",k
print mi, '和', ni ,"的最小公倍数为:",mi*ni/k
version = '0.1'
当这个模块作为程序入口点时将执行if __name__ == '__main__':之下的语句,而作为模块被导入其他模块时则不会执行,很方面的功能,我个人觉得使得单元测试进行得更方便了!
问题七:如何使用“数组”
# -*- coding: cp936 -*-
from Num import Calcu
#列表的使用:定义两个列表,算出他们的最大公约数
NumListA = ;
NumListB = ;
NumListC = [];
for i in range(0,len(NumListA)):
NumListC.append(Calcu(NumListA,NumListB));
print NumListC;
同时也练习了模块间的调用。
问题八:如何声明和使用“类”
# -*- coding: cp936 -*-
#求两个整数的最大公约数和最小公倍数
class NumBase:
def __init__(Self,m,n):
#确保m>=n
if m < n:
t = m;
m = n;
n = t;
Self.m = m;
Self.n = n;
def __del__(Self):
print "Calcu between %d and %d is over."%(Self.m,Self.n);
def Calcu(Self):
m = Self.m;
n = Self.n;
#循环比较
while True:
t = m%n;
if t == 0:
break;
m = n;
n = t;
return n;
if __name__ == '__main__':
mi = int(raw_input(u'输入一个整数:'));
ni = int(raw_input(u'再输入一个整数:'));
#输出结果
NB = NumBase(mi,ni);
k = NB.Calcu();
print mi, '和', ni ,"的最大公约数为:",k
print mi, '和', ni ,"的最小公倍数为:",mi*ni/k
del NB;
version = '0.1'
对象的成员变量(相当于C++里的非static变量)不需要声明,,只有类成员变量(相当于C++里static变量)才需要声明。__init__相当于C++里的构造函数,__del__相当于C++里的析构函数,成员函数的声明必须在第一项为指向自身的Self引用留出位置(这一点于C++很不相同)。
正是由于如此,类成员变量的访问都要加上Self.来实现,意义更加明显。
用了一天的时间通读了《python简明教程》,很多东西都是对面对对象语言的另一种实现,老实说并不难。
我想,接下来要做的是了解更多的库类用法,了解更多的语言细节吧,再接再厉!
PS,这一阶段遗留的问题:
1-1,如果对象的成员变量不需要“声明”,那么如何表示这个成员变量的访问属性(private,public)呢?
1-2,关于类函数接口的访问属性是如何设置的呢?如果子类出现于父类同名的函数,如何体现继承覆盖和多态(abstract,interface)的区别呢?
1-3,常用的绘图库类有哪些,怎么用?
1-4,常用的数学库类有哪些,怎么用?
==============第二阶段:利用更多的资源进阶================
这一阶段我打算主要学习:http://www.diveintopython.org/(深入解析Python),期待能从中得到更精彩的内容吧! 这一阶段内容比较发散,见帖子:
用TTM方法生成翼型网格(Python & MATLAB)
http://forum.vibunion.com/thread-98121-1-1.html
Scipy库中哪个函数可以求解一元函数的根?
http://forum.vibunion.com/thread-98104-1-1.html
关于OOP中若干特性的思考
http://forum.vibunion.com/thread-97114-1-1.html
==============更多库类及参考资料=======================
SciPy,参考资料见:
http://docs.scipy.org/doc/numpy/numpy-ref.pdf
Numpy,参考资料见:
http://docs.scipy.org/doc/scipy/scipy-ref.pdf
http://docs.scipy.org/doc/numpy/numpy-user.pdf
matplotlib,参考资料见:
http://matplotlib.sf.net/Matplotlib.pdf
===========================================================
pythonxy里有一个更像matlab的就是spyder。你可以打开看一下,非常的方便。 回复 smtmobly 的帖子
谢谢,安装的时候把能选的都选上了,装完了眼花缭乱的,刚开始用eclipse新建了一个模块,一上来就写:
if __name__ == '__main__':
看得我一头雾水(当然现在貌似是明白了。。。),所以决定从零开始认真捋一遍…… 调试用的,你可以用ipython。cd 到你的文件夹,run test.py 就可以运行程序。
慢慢玩吧!祝你玩的快乐呵呵 fy,你到底是在干嘛的啊?感觉你就像个程序员了。。。。什么都那么懂{:{13}:} fxuestc 发表于 2010-11-3 16:40 static/image/common/back.gif
fy,你到底是在干嘛的啊?感觉你就像个程序员了。。。。什么都那么懂
搞计算数学的老师{:{02}:} 本帖最后由 fxuestc 于 2010-11-3 16:55 编辑
回复 FtpAdmin 的帖子
计算数学{:{28}:} 呵呵,说我??你高估我了,我其实都是每个都是皮毛,兴趣广泛而已。
呵呵。不知道怎么搞的ubuntu的输入法用的很 不顺手,郁闷的很 。
这两 天一直想用sympy把那个四届偏微分方程解出来,还是没搞定,
还想在这写一个例子呢,结果没成功,还是手算靠谱点。 回复 smtmobly 的帖子
加油加油{:{35}:}
等我把第二阶段过了打算把以前用MATLAB写的一个分流体网格的程序用Python重写,也是反解偏微分方程(Laplace),呵呵 你用laplace变换写流体力学的计算程序? 回复 smtmobly 的帖子
还有,Python分区雪缘帮我们分出来了,呵呵 哦!呵呵,我说呢,以前我也用拉票laplace逆运算计算演化方程,但是只能计算线性的。有兴趣可以看看我的论文。不过我的毕业论文不知道去哪了,只有发表的论文,也许对你有用 呵呵,没啥,都是些已经成熟的问题,是我的论文,我发给你 呵呵,看到大家让我都很有动力深化我的编程能力了……加油呵…… 回复 14 # captain114 的帖子
呵呵,说的是。貌似你也是北航的,我现在也是在北航,遇到同窗了呵……以后还要多向大家学习……
页:
[1]
2