|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
拜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程序
问题四:求两个整数的最大公约数和最小公倍数
- # -*- 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 = [10,20,30,40,50];
- NumListB = [14,56,23,1234,100];
- NumListC = [];
- for i in range(0,len(NumListA)):
- NumListC.append(Calcu(NumListA[i],NumListB[i]));
- 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
===========================================================
|
评分
-
3
查看全部评分
-
|