python基础学习笔记(一)

来源:互联网 发布:console显示日志java 编辑:程序博客网 时间:2024/06/07 03:06


       好吧!我早就想学习一门语言了,我想编程是我们大多测试员的短板。虽然,我更熟悉JAVA,但我还是的rubypython之间犹豫了很久。我一直觉得自己编程方面没有天赋。所以就选个简单点的下手吧。


 

 

安装与运行交互式解释器

 

    在绝大多数linux和 UNIX系统安装中(包括Mac OS X,Python的解释器就已经存在了。我们可以在提示符下输入python命令进行验证(作者环境ubuntu

fnngj@fnngj-H24X:~$ python Python 2.7.3 (default, Sep 26 2012, 21:53:58) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 

Ok ! 如果敲入python命令出现以上信息时,表明我们已经安装了python 环境。

           如果没有安装,在ubuntu /Debin linux ,那么可以用下面的命令来安装Python:

 $ apt-get install python

如果是window 下的安装,以及linux 下下载源码包的安装,相信此类人问题很容易找到,这里就不具体讲解了。相信比第一次配置java环境要简单的多。

 

输入一下命令,看其是否可以正常运行。

>>> print "hello,world!" hello,world!

注意:如果要推出交互式解释器,可以ctrl+D 

 

算法是什么?


       在认真编程之前,先来说说什么是计算机程序设计,简单地说,计算机程序设计就是告诉计算机做什么事。计算机可以做很多事,但它不会自己思考,需要我们告诉它具体细节,需要用计算机能够理解的语言将算法告诉它。“算法”不过是“程序”或者“食谱”的另一种悦耳的说法----详细描述如何做某事。

小葱拌豆腐、豆腐、

首先,拿一些豆腐;(声明一个变量)

然后加入小葱在豆腐上。(两个变量相加)

如果需要特殊辣味的豆腐。(考虑特定的条件)

煮熟---10分钟检查一次。(重复运行此指令)


食谱和算法都包含一些要素(对象、物品),以及指令(语句)。“小葱” 和“ 豆腐” 就是要素。指令包括“加入小葱在豆腐上” 等。

 

 

数字和表达式:

 

交互式python解释器可以当强大的计算器使用

复制代码
>>> 1-2 -1 >>> 1+2 3 >>> 32784*13 426192 >>> 1/2 0
复制代码

   什么情况?1不是应该等于0.5么?怎么是0呢? “/” 用于取整,不够整除,肯定就是0了,试试浮点数

>>> 7/2 3>>> 1.0/2.0 0.5

 

试试“%” 取余

复制代码
>>> 6 % 3 0 >>> 6 / 3 2 >>> 6 % 3 0 >>> 7 / 3 2 >>> 7 % 3 1 >>> 13 % 9 4>>> 0.75 % 0.5 0.25
复制代码

看明白整除(/)与取余(%)的区别了吧。

6 / 3 刚好被2整除,所以余数(%)是, 13 / 9 只能带得到1,余数就是


下面再试试“ ** ” 幂运算(乘方)符

复制代码
>>> 2*2*2 8 >>> 2**3 8 >>> 2**6 64 >>> -3**2 -9 >>> (-3)**2 9
复制代码

23次方可以用乘方符(**)表示,这样就相当方便。

乘方符的比取反(一元减运算符)的优先级高,所以-3**2 等同于-3**2),如果想计算(-3**2,就需要显式说明。

 

 

长整数


python可以处理非常大的数

>>> 100000000000000000000000 100000000000000000000000L >>> 100000000000000000000000L 100000000000000000000000L

普通整数在2 147 483 647 至 -2 147 483 647 之间,超出可以用长整形表示(L) ,我们也可以自己把整数转换成长整型(输入时在末尾加“L”


 

变量


这个和其他编程语言没有任何不同,如果你从没接触过程序,相信你也很容易理解。

复制代码
>>> x = 3 >>> x*2 6>>> x = 5 >>> x * 2 1
复制代码

赋值给 ,那么变量现在的值就是3, 乘以 结果是,我又把赋值给了 ,那么与2相乘的结果肯定是10了。

定义变量规则:不能以数字开头,可以包含字母、数字和下划线。

 

 

语句


实际上最开始我们已经讲了语句 print 就是打印输出语句。

>>> 2*2 4 >>> print 2*2 4

虽然结果一样,上面的是表达式,下面的是语句。



获取用户输入


有使用程序运行的过程需要用户输入,根据用户输入的内容继续执行。

>>> input("输入表达式:") 输入表达式:2*2 4

程序的第二行等待用户输入,2*2 是由用户随便输入的。下面看个更有意思点的。

复制代码
>>> x=input("x:") x:15 >>> y=input("y:") y:32 >>> print x*y 480 
复制代码

哎~!别傻看了,和我一起敲才有意思呢! 我保证下面的你看不懂!

>>> if 1==2 : print 'one equals two' ... >>> if 1==1 : print 'one equals one' ... one equals one 

算了,告诉你吧,如果1等于(==2,条件是假(就是不成立),print 'one equals two' 将不被执行。

如果1等于(==1,条件是真(成立),print 'one equals ' 将被执行。

 

 

函数


前面介绍过使用幂运算符(**)来计算乘方。事实上,可以用函数来代替运算符,这个函数就是pow :

>>> 2**38>>> pow(2,3)8

函数就像可以用来实现特定功能的小程序一样。python的很多函数都做很奇妙的事情。我们也可以自定义函数。因此,我们通常把pow等系统提供的函数称为 内建函数。

复制代码
>>> 10+pow(2, 3*5)/3.010932.666666666666>>> abs(-10)10>>> 18/131>>> round(18.4/13.7)1.0
复制代码

 

我们当热可以使用函数调用和运算符创建更复杂的表达式; abs()函数可以得到数人绝对值,round函数则会把浮点数四舍五入为最接近的整数值。


 

模块


可以把模块想象成导入到python以增强其功能的扩展。需要使用特殊人命令import来导入模块。

>>> import math>>> math.floor(32.9)32.0>>> int(math.floor(32.9))32

floor 函数的功能是取整。因为floor()函数属于math模块,所以在使用之前要先导入模块(import math),然后按照(模块.函数)的格式使用这个模块的函数。

如果想把32.9转换为整数(32)而不是浮点数(32.0),可以使用int函数。


在确定自己不会导入多个同名函数(从不同模块导入)的情况下,你可能不希望在每次调用函数的时候,都要写模块的名字。那么,可以使用import命令的另外一种形式:

>>> from math import sqrt>>> sqrt(9)3.0>>> sqrt(8)2.8284271247461903

sqrt()函数用于计算一个数的平方根。


 

保存并执行程序


本人在ubuntu 下进程学习,一个python命令就进入了交互式解释器。交互式解释器是python的强项之一,它让实时检验解决方案并且体验这门语言成为了现实。但是,在交互式解释器里面输入的一切都会在它退出的时候丢失。我们真正想做的事情是编写自己和他人都能运行的程序。

复制代码
下面我们创建一个文件root@fnngj-H24X:/hzh/python# touch hell.pyroot@fnngj-H24X:/hzh/python# lshell.pyroot@fnngj-H24X:/hzh/python# vi hell.py输入:print “hello,world!”保存退出。运行root@fnngj-H24X:/hzh/python# python hell.py hello,world!
复制代码

 

 

看!这就是一个可以一直运行的程序。 好吧!以上面的这种方式,在来做个有意思的程序。

 

复制代码
打开文件,输入一下程序:name=raw_input("what is your name?")print "hello "+name+ " !"保存退出,运行!root@fnngj-H24X:/hzh/python# python hell.py what is your name?huhu      // 这里要求用户输入自己的名字hello huhu !
复制代码

 

 


             不知道是因为python 语言本身的特点,还是因为我找到了一本不错的入门教程《python 基础教程(第二版)》 ,我学习这门语言的过程非常舒服。不像java,为了使程序输出一个hello word,要写很多东西。(这里没有说java不好的意思)

 

       好吧!我早就想学习一门语言了,我想编程是我们大多测试员的短板。虽然,我更熟悉JAVA,但我还是的rubypython之间犹豫了很久。我一直觉得自己编程方面没有天赋。所以就选个简单点的下手吧。


 

 

安装与运行交互式解释器

 

    在绝大多数linux和 UNIX系统安装中(包括Mac OS X,Python的解释器就已经存在了。我们可以在提示符下输入python命令进行验证(作者环境ubuntu

fnngj@fnngj-H24X:~$ python Python 2.7.3 (default, Sep 26 2012, 21:53:58) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 

Ok ! 如果敲入python命令出现以上信息时,表明我们已经安装了python 环境。

           如果没有安装,在ubuntu /Debin linux ,那么可以用下面的命令来安装Python:

 $ apt-get install python

如果是window 下的安装,以及linux 下下载源码包的安装,相信此类人问题很容易找到,这里就不具体讲解了。相信比第一次配置java环境要简单的多。

 

输入一下命令,看其是否可以正常运行。

>>> print "hello,world!" hello,world!

注意:如果要推出交互式解释器,可以ctrl+D 

 

算法是什么?


       在认真编程之前,先来说说什么是计算机程序设计,简单地说,计算机程序设计就是告诉计算机做什么事。计算机可以做很多事,但它不会自己思考,需要我们告诉它具体细节,需要用计算机能够理解的语言将算法告诉它。“算法”不过是“程序”或者“食谱”的另一种悦耳的说法----详细描述如何做某事。

小葱拌豆腐、豆腐、

首先,拿一些豆腐;(声明一个变量)

然后加入小葱在豆腐上。(两个变量相加)

如果需要特殊辣味的豆腐。(考虑特定的条件)

煮熟---10分钟检查一次。(重复运行此指令)


食谱和算法都包含一些要素(对象、物品),以及指令(语句)。“小葱” 和“ 豆腐” 就是要素。指令包括“加入小葱在豆腐上” 等。

 

 

数字和表达式:

 

交互式python解释器可以当强大的计算器使用

复制代码
>>> 1-2 -1 >>> 1+2 3 >>> 32784*13 426192 >>> 1/2 0
复制代码

   什么情况?1不是应该等于0.5么?怎么是0呢? “/” 用于取整,不够整除,肯定就是0了,试试浮点数

>>> 7/2 3>>> 1.0/2.0 0.5

 

试试“%” 取余

复制代码
>>> 6 % 3 0 >>> 6 / 3 2 >>> 6 % 3 0 >>> 7 / 3 2 >>> 7 % 3 1 >>> 13 % 9 4>>> 0.75 % 0.5 0.25
复制代码

看明白整除(/)与取余(%)的区别了吧。

6 / 3 刚好被2整除,所以余数(%)是, 13 / 9 只能带得到1,余数就是


下面再试试“ ** ” 幂运算(乘方)符

复制代码
>>> 2*2*2 8 >>> 2**3 8 >>> 2**6 64 >>> -3**2 -9 >>> (-3)**2 9
复制代码

23次方可以用乘方符(**)表示,这样就相当方便。

乘方符的比取反(一元减运算符)的优先级高,所以-3**2 等同于-3**2),如果想计算(-3**2,就需要显式说明。

 

 

长整数


python可以处理非常大的数

>>> 100000000000000000000000 100000000000000000000000L >>> 100000000000000000000000L 100000000000000000000000L

普通整数在2 147 483 647 至 -2 147 483 647 之间,超出可以用长整形表示(L) ,我们也可以自己把整数转换成长整型(输入时在末尾加“L”


 

变量


这个和其他编程语言没有任何不同,如果你从没接触过程序,相信你也很容易理解。

复制代码
>>> x = 3 >>> x*2 6>>> x = 5 >>> x * 2 1
复制代码

赋值给 ,那么变量现在的值就是3, 乘以 结果是,我又把赋值给了 ,那么与2相乘的结果肯定是10了。

定义变量规则:不能以数字开头,可以包含字母、数字和下划线。

 

 

语句


实际上最开始我们已经讲了语句 print 就是打印输出语句。

>>> 2*2 4 >>> print 2*2 4

虽然结果一样,上面的是表达式,下面的是语句。



获取用户输入


有使用程序运行的过程需要用户输入,根据用户输入的内容继续执行。

>>> input("输入表达式:") 输入表达式:2*2 4

程序的第二行等待用户输入,2*2 是由用户随便输入的。下面看个更有意思点的。

复制代码
>>> x=input("x:") x:15 >>> y=input("y:") y:32 >>> print x*y 480 
复制代码

哎~!别傻看了,和我一起敲才有意思呢! 我保证下面的你看不懂!

>>> if 1==2 : print 'one equals two' ... >>> if 1==1 : print 'one equals one' ... one equals one 

算了,告诉你吧,如果1等于(==2,条件是假(就是不成立),print 'one equals two' 将不被执行。

如果1等于(==1,条件是真(成立),print 'one equals ' 将被执行。

 

 

函数


前面介绍过使用幂运算符(**)来计算乘方。事实上,可以用函数来代替运算符,这个函数就是pow :

>>> 2**38>>> pow(2,3)8

函数就像可以用来实现特定功能的小程序一样。python的很多函数都做很奇妙的事情。我们也可以自定义函数。因此,我们通常把pow等系统提供的函数称为 内建函数。

复制代码
>>> 10+pow(2, 3*5)/3.010932.666666666666>>> abs(-10)10>>> 18/131>>> round(18.4/13.7)1.0
复制代码

 

我们当热可以使用函数调用和运算符创建更复杂的表达式; abs()函数可以得到数人绝对值,round函数则会把浮点数四舍五入为最接近的整数值。


 

模块


可以把模块想象成导入到python以增强其功能的扩展。需要使用特殊人命令import来导入模块。

>>> import math>>> math.floor(32.9)32.0>>> int(math.floor(32.9))32

floor 函数的功能是取整。因为floor()函数属于math模块,所以在使用之前要先导入模块(import math),然后按照(模块.函数)的格式使用这个模块的函数。

如果想把32.9转换为整数(32)而不是浮点数(32.0),可以使用int函数。


在确定自己不会导入多个同名函数(从不同模块导入)的情况下,你可能不希望在每次调用函数的时候,都要写模块的名字。那么,可以使用import命令的另外一种形式:

>>> from math import sqrt>>> sqrt(9)3.0>>> sqrt(8)2.8284271247461903

sqrt()函数用于计算一个数的平方根。


 

保存并执行程序


本人在ubuntu 下进程学习,一个python命令就进入了交互式解释器。交互式解释器是python的强项之一,它让实时检验解决方案并且体验这门语言成为了现实。但是,在交互式解释器里面输入的一切都会在它退出的时候丢失。我们真正想做的事情是编写自己和他人都能运行的程序。

复制代码
下面我们创建一个文件root@fnngj-H24X:/hzh/python# touch hell.pyroot@fnngj-H24X:/hzh/python# lshell.pyroot@fnngj-H24X:/hzh/python# vi hell.py输入:print “hello,world!”保存退出。运行root@fnngj-H24X:/hzh/python# python hell.py hello,world!
复制代码

 

 

看!这就是一个可以一直运行的程序。 好吧!以上面的这种方式,在来做个有意思的程序。

 

复制代码
打开文件,输入一下程序:name=raw_input("what is your name?")print "hello "+name+ " !"保存退出,运行!root@fnngj-H24X:/hzh/python# python hell.py what is your name?huhu      // 这里要求用户输入自己的名字hello huhu !
复制代码

 

 


             不知道是因为python 语言本身的特点,还是因为我找到了一本不错的入门教程《python 基础教程(第二版)》 ,我学习这门语言的过程非常舒服。不像java,为了使程序输出一个hello word,要写很多东西。(这里没有说java不好的意思)

 

注释

 

为了让别人能够更容易理解程序,使用注释是非常有效的,即使是自己回头再看旧代码也是一样。

>>> #获得用户名:>>> user_name = raw_input("what is your name?")

python 中用井号(#)表示注释。井号(#)右边的内存将不被程序执行。即使没有注释,也应该让代码本身易于理解。幸好!Python是一门出色的语言,它能帮助程序员编写易于理解的程序。^_^

 

 

字符串


 

 

单引号字符串和转义引号

复制代码
>>> "hello,world"'hello,world'>>> '"hello ,world" she said''"hello ,world" she said'>>> "'hello,world' she said""'hello,world' she said"
复制代码

 

第一个输出,明明是双引号( “” ) ,怎么输入变成了单引号( ‘’ )。这有什么区别呢?事实上,没有区别。

再看第二个,单引导(‘’)里面包含了一对双引号(“”),这次完整输出了。难道只有双引号输出会变成单引号么?

再看第三个,双引号(“”)号里面包含了一对单引号(‘’),这次为什么没把最外面的双引号变成单引号输出? 这编译器比较情绪化,呵呵!

 

复制代码
>>> "Let's go""Let's go">>>'Let's go'SyntaxError: invalid syntax>>> 'Let\'s go'"Let's go"
复制代码

第一个输出,双引号包含一个单引号(实际上应该叫撇(‘) ,因为它不是成对出现的。)可以正常输出。

第二个输出,一对单引号里面包含了一个单引号(这应该是输入者的本意)。编译器不知道怎么识别了。

第三个输出,为了达到这个目的,我们需要把中间的单引号用斜杠(\)进行转义。这次又不一样了,单引号输出之后变成了双引号。编译器,你真调皮。

 

拼接字符串

下面试试加号(+)来拼接一个字符

复制代码
>>> "helle,"+"world!"'helle,world!'

>>> x="hello,">>> y="world!">>> x+y'hello,world!'
复制代码

 

 

字符串表示,str 和 repr

前面的例子读者可能注意到,所有通过python打印的字符串还是被引号括起来的。这是因为python打印值的时候会保持该值在python代码中的状态,而不是你希望 用户所看到的状态。如果用print语句,结果就不一样了:

复制代码
>>> "hello,world!"'hello,world!'>>> 10000L10000L>>> print "hello,world!"hello,world!>>> print 10000L10000
复制代码

可以看到,长整型数10000L被转换成了数字10000 ,而且在显示给用户的时候也如此。

我们在这里讨论的实际上是值被转为字符的两种机制。可以通过以下两个函数来使用这两种机制:

复制代码
>>> print str("hello,world!")hello,world!>>> print str(10000L)10000>>> print repr("hello,world!")'hello,world!'>>> print repr(10000L)10000L
复制代码

str()函数 ,它会把值转换为合理形式的字符串,以例用户可以理解;

repr()函数,它会创建一个字符串,它以合法的python表达式的形式来表示值。

 

 

input 和 raw_input 的比较

上一章的最后一个例子用到了raw_input 函数,那它与 input 有什么不用? 下面我们用input函数,再试试那个例子。

复制代码
>>> name = input("what is your name?")what is your name?huhuTraceback (most recent call last):  File "<pyshell#0>", line 1, in <module>    name = input("what is your name?")  File "<string>", line 1, in <module>NameError: name 'huhu' is not defined>>> name = input("what is name?")what is name?"huhu">>> print "hello, " + name + " !"hello, huhu !
复制代码

input()函数会假设用户输入的是合法的python表达式。所以直接输入huhu 系统会提示错误,但是如果加上引号(“huhu”)就会是一个合法的字符,程序运行是没有问题的。

然而,要求用户带着引号输入他们的名字有点过份,因此,就这需要使用raw_input函数。

复制代码
>>> input("enter a namber:")enter a namber:33>>> raw_input("enter a namber:")enter a namber:3'3'
复制代码

当然input有特别的需要,比如要求用户输入数字时。

 

 

长字符串 

如果需要写一个非常非常长的字符串,它需要跨多行,那么,可以使用三个引号带点普通引号。

复制代码
>>> print ''' this is a very long string.It continues here.and it's not over yet.''' this is a very long string.It continues here.and it's not over yet.
复制代码

普通字符串也可以跨行。如果一行之中最后一个字符是反斜线,那么,换行符本身就“转义”了,也就是被忽略了。

复制代码
>>> print " Hello.\world!" Hello.world!>>> 1+2+\      4+512
复制代码

 

 

 

原始字符串

>>> path ='C:\abc'>>> print pathC:bc

怎么会这样呢,我想输入的是一个路径,却被换行了。

>>> print 'C:\\abc'C:\abc>>> print 'C:\\Program Files\\fnord\\foo\\bar\\baz\\frozz'C:\Program Files\fnord\foo\bar\baz\frozz

通过上面的双斜线(\\)解决了路径问题,但如果路径很长的话会不会太麻烦了。

>>> print r'C:\Program Files\fnord\foo\bar\baz\frozz'C:\Program Files\fnord\foo\bar\baz\frozz>>> print r'Let\'s go !'Let\'s go !

原始字符串不会把反斜线当作特殊字符。可以看到,原始字符串以r开头。

 

 

Unicode字符串

字符串常量的最后一种类型就是Unicode 字符串(或者称为Unicode 对象---与字符串并不是同一个类型)。Python中的普通字符串在内部是以8ASCII码形成存储的,而Unicode字符串则存储为16Unicode字符,这样就能够表示更多的字符集了,包括世界上大多数语言的特殊字符。 

如果你不短简什么是Unicode ,可以访问Unicode网站:http://www.unicode.org

>>> u'hello, world!'u'hello, world!' 

可以看到,Unicode字符串使用u前缀,就像原始字符串使用一样。

注意:在python 3.0中,所有字符串都是Unicode字符串。


 

原创粉丝点击