python核心编程学习笔记-pyt…

来源:互联网 发布:凹半圆铣刀r4数据 编辑:程序博客网 时间:2024/06/15 16:31
原文地址:python核心编程学习笔记-python起步作者:改变自己

 

python通过两种方式来实现你的需求:语句和表达式

语句:使用关键字组成命令

>>>print 'Hello wolrd!'

Hello wolrd!

 

表达式:可以是算术表达式或函数

>>>abs(-4)

4

>>>abs(4)

4

 

2.1、程序输出,print语句及”hello world”

>>>mystring="hello world"

>>>print mystring

hello world

>>>mystring  #在交互式解释器里可直接输入变量名

'hello world'

 

注:print语句调用str()函数显示对象,交互式解释器调用repr()函数显示对象。

 

2.2、程序输入和raw_input()内建函数

>>>_       #下划线在解释器中表示最后一个表达式的值

'hello world'

 

print语句与字符串格式运算符“%”结合使用,实现字符串替换功能:

>>>print "%s is number %d!" % ("python",1)

python is number 1!

 

%s表示一个字符串来替换,%d表示一个整数替换,%f表示一个浮点数替换

 

Print语句支持将输出重定向文件,符号”>>”重定向:

>>>import sys

>>>print >> sys.stderr, 'Fatalerror:invalid input!'

Fatal error:invalid input!

 

[root@localhost tmp]# morelog.txt

11111

 

>>>logfile=open('/tmp/log.txt','a')         #open打开文件,a表示add添加

>>>print >> logfile,'fatal error:invalidinput!'

>>>logfile.close()

 

[root@localhost tmp]# morelog.txt

11111

fatal error:invalid input!

 

内建函数:raw_input获取用户数据输入,读取标准输入并赋值给指定变量

>>>user=raw_input('Enter login name:')

Enter login name:root

>>>print 'Your login is:',user

Your login is: root

 

使用int()内建函数可将用户输入的数值字符串转换为整数:

>>>num=raw_input('Now enter a number:')

Now enter a number:2012

>>>print 'Doubling your number:%d' % (int(num) * 2)

Doubling your number:4024

 

查看函数帮助信息:help()

>>>help(raw_input)

Help on built-in function raw_input in module__builtin__:

 

raw_input(...)

   raw_input([prompt]) -> string

   

   Read a string from standard input.  The trailing newlineis stripped.

   If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raiseEOFError.

   On Unix, GNU readline is used if enabled.  The prompt string, ifgiven,

   is printed without a trailing newline beforereading.

(END)

 

2.3、注释

shell一样,用”#”标示注释

>>>#one comment

... print 'Hello World!'

Hello World!

 

DocStrings:文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。适用于函数、模块、类。

>>>def foo():

...    "this is a doc string." #此行为文档子字符串,这里没有按照惯例

...    return True

...

>>>foo()

True

>>> printfoo.__doc__    #打印函数foo__doc__属性

this is a doc string.

>>>help(foo)            #也可以使用help打印,输入help()也会显示自身__doc__ 属性

Help on function foo in module__main__:

 

foo()

this is a docstring.

 

2.4、运算符

算术运算符:  -  *  / //(浮点除法,四舍五入)  %(取余)  **(乘方)

>>>print -2*4+3**2

1

优先级:**最高,*///%+-

 

比较运算符:< <= > >=  ==  != <>(不等于,python3取消了)

比较运算符结果返回布尔值:TrueFalse

>>>2<4

True

>>>2==4

False

>>>2>4

False

>>>6.2<=6

False

>>>6.2<=6.2

True

>>>6.2<=6.201

True

 

逻辑运算符:andornot

>>>2<4 and 2==4

False

>>>2<4 or 2==4

True

>>>not 6.2 <=6

True

>>>3<4<5

True

>>>3<4 and 4<5

True

 

2.5、变量和赋值

变量名由字母、数字、下划线组成,大小写敏感;

变量赋值通过等号”=”执行;

>>>counter=0         #整数赋值

>>>miles=1000.0   #浮点赋值

>>>name='Bob'      #字符串赋值

>>>counter=counter+1  #整数加1

>>>kilometers=1.609*miles  #浮点数乘法赋值

>>>print '%f miles is the same as %f km' %(miles,kilometers)

1000.000000 miles is the same as 1609.000000km

 

>>>n=1

>>>n=n*10

>>>print n

10

>>>

>>>n*=10       #增量赋值,运算符和等号合并

>>>print n

100

 

注:Python不支持c语言的自增、自减运算符,+/-也是单目运算符,--n会解释为-(-n)等于n++n同上结果为n

 

2.6、数字

Python支持5种基本数字类型,三种为整数类型:

Int(有符号整数)

long(长整数)            #python3中取消了long

bool(布尔值)

float(浮点值)

complex(复数)

 

decimal:十进制数浮点型,非内建类型,需导入模板才可使用

>>>1.1

1.1000000000000001

>>>import decimal

>>>print decimal.Decimal('1.1')

1.1

 

2.7、字符串

字符串定义为引号之间的字符合集,支持成对的单引号,双引号,三引号(三个连续的单/双引号)。

使用索引运算符”[]”、切片运算符”[ : ]”取得子字符串。字符串索引规则:第一个字符索引是0,最后一个字符串索引是-1

加号”+”用于字符串连接运算,星号”*”用于字符串重复。

>>>pystr='python'

>>>iscool='is cool!'

>>>pystr[0] #取第一个字符

'p'

>>>pystr[2:5] #取第三个到第五个字符

'tho'

>>>iscool[:2] #12字符

'is'

>>> iscool[3:]#第四个到最后

'cool!'

>>>iscool[-1] #最后一个字符

'!'

>>>pystr+iscool      #连接两个变量字符串

'pythonis cool!'        # pythonis没有空格

>>> pystr+''+iscool  #添加一个空格

'python is cool!'

>>>pystr*2     #字符串乘2等于2倍字符串

'pythonpython'

>>>'-'*20                  #20个横杠字符

'--------------------'

>>>pystr='''python          #三引号实例

... is cool'''

>>>pystr

'pythonnis cool'      #变量直接输出会显示n换行符

>>> printpystr                  #print打印多行

python

is cool

 

2.8、列表和元组

可看成数组,能保存任意数量任意类型的python对象,索引也是从0开始。

列表和元组的区别:

列表元素用中括号”[]”包裹,元素个数及值可以改变;

元组元素用小括号”()”包裹,元素不可以更改,可看成只读列表;

都使用索引运算符”[]”、切片运算符”[ : ]”取得子集;

 

列表实例:

>>>list=[1,2,3,4]

>>>list

[1, 2, 3, 4]

>>>list[0]

1

>>>list[2:]

[3, 4]

>>>list[:3]

[1, 2, 3]

>>>list[1]=6

>>>list

[1, 6, 3, 4]

 

元组实例:

>>>tuple=('robots',77,88,'try')

>>>tuple

('robots', 77, 88, 'try')

>>>tuple[:2]

('robots', 77)

>>>tuple[1]=3 #元组赋值报错

Traceback (most recent calllast):

  File"<stdin>", line 1, in?

TypeError: object does not support itemassignment

 

2.9、字典

字典是python中的映射数据类型,由键-(key-value)对构成。几乎所有类型的python对象都可用作键值,数字和字符串最常用。

字典元素用大括号”{}”包裹。

>>>dict={'host':'earth'}

>>>dict['port']=80

>>>dict

{'host': 'earth', 'port': 80}

>>>dict.keys()

['host', 'port']

>>>dict['host']

'earth'

>>>for key in dict:

...    print key,dict[key]

...

host earth

port 80

 

2.10、代码块及缩进对齐

python语言是通过缩进对齐表达代码逻辑,不使用大括号,缩进方式可选择tab或空格,这种方式的好处不言而喻,一是简洁美观,二可读性好。

 

2.11if语句

if expression:        #表达式值为非0或布尔值True,则执行代码组if_suite,否则执行下一条

        if_suite

 

>>>x=3

>>>if x<5:

...    print 'x is %d' % (x)

...

x is 3

 

if语句支持elseelif于语句:

if expression1:

        if_suite

elif expression2:

        elif_suite

else:

        else_suite

 

2.12while循环,类似if语法

while expression:

        while_suite

 

>>>counter=0

>>>while counter<3:

...    print 'loop #%d' % (counter)

...    counter+=1

...

loop #0

loop #1

loop #2

 

2.13for循环和range()内建函数

>>>for item in['e-mail','net-surfing','homework','chat']:

...    print item,

...    print

...

e-mail

net-surfing

homework

chat

 

print语句通过加入逗号实现添加空格:

>>>who='knights'

>>>what='Ni!'

>>>print 'We are the',who,'who say',what,what,what

We are the knights who say Ni! Ni!Ni!

>>> print 'Weare the %s who say %s' %       #””换行

... (who,((what+' ')*4))

We are the knights who say Ni! Ni! Ni!Ni!

 

>>> foreachnum in range(3):          #range内建函数

...    print eachnum

...

0

1

2

 

字符串迭代:

>>>foo='abc'

>>>for c in foo:

...    print c

...

a

b

c

 

range()len()函数用于字符串索引:

>>>foo='abc'

>>>for i in range(len(foo)):

...    print foo[i],'(%d)' % i

...

a (0)

b (1)

c (2)

 

enumerate()函数同时循环索引和元素:

>>>for i,ch in enumerate(foo):

...    print ch,'(%d)' % i

...

a (0)

b (1)

c (2)

 

2.14、列表解析

可以在一行中使用一个for循环将所有值放到一个列表当中:

>>>squared=[x ** 2 for x in range(4)]

>>>for i in squared:

...    print i

...

0

1

4

9

 

2.15、文件和内建函数open()file()

hand=open(file_name,access_mode=’r’)

file_name变量为打开文件的字符串名字

access_mode”r”表读取,”w” 表写入,“a”表添加,”+”表读写,”b”表二进制访问,默认为”r”

如果open()成功,一个文件对象句柄会被返回,所有后续的文件操作都必须通过此文件句柄进行。当一个对象返回后,就可以访问它的一些方法,如readlines()close() . 文件对象的方法属性也必须通过句点属性标识法访问。

 

属性是与数据有关的项目,属性可以是简单的数据值,也可以是执行对象,如函数和方法。类、模块、文件、复数等对象都拥有属性。通过使用句点属性标识法来访问对象属性:object.attribute

 

2.16、错误和异常

python程序在运行时可通过try-except语句检测错误,检测到错误后,解释器引发一个异常并显示信息。try后位代码组,except后为处理错误的代码。

>>>filename=''

>>>while 1:

...    filename=raw_input("Input a file name:")

...    if filename=='q':

...            break

...    try:

...            f=open(filename,"r")

...            print'opend a file.'

...    except:

...            print 'There is no file named',filename

...

Input a file name:logfile

There is no file named logfile

Input a file name:

There is no file named

Input a file name:/tmp/log.txt

opend a file.

Input a file name:q

 

2.17、函数

语法:

def function_name([argument])     #argument参数可选

        “optional documentation string”

        function_suit

 

>>>def addme2me(x):

...    'apply+operation to argument'

...    return (x+x)        #加号运算符支持几乎所有的标准数据类型

...

>>>addme2me(3)

6

>>>addme2me(4.5)

9.0

>>>addme2me('python')

'pythonpython'

>>>

>>>

>>>addme2me([-1,'abc'])

[-1, 'abc', -1, 'abc']

 

函数参数可以设置默认值,如果调用时没有提供参数,则取默认值:

>>>def foo(debug=True):

...    if debug:

...            print 'in debug mode'

...            print 'done'

...

>>>foo()

in debug mode

done

>>>foo(False)

 

2.18、类

>>>class fooclass(object):

...    version=0.1

...    def __int__(self,nm='John Doe'):

...            self.name=nm

...            print 'create a class instance for',nm

...    def showname(self):

...            print'Your name is',self.name

...            print 'My name is',self.__class__.__name__

...    def showver(self):

...            print self.version

...    def addme2me(self,x):

...            return x+x

...

>>>

>>>fool=fooclass()

create a class instance for JohnDoe

>>>fool.showver()

0.1

>>>print fool.addme2me(5)

10

>>>print fool.addme2me('xyz')

xyzxyz

 

2.19、模块

导入模块:importmodule_name

 

系统自带很多模块,自己编写的.py结尾的程序也是一个模块,模块名不带后缀,调用模块函数或模块变量通过句点”.”访问。

>>>import sys

>>>sys.stdout.write('Hello World!n')

Hello World!

>>>sys.platform

'linux2'

>>>sys.version

'2.4.3 (#1, Mar  5 2011, 21:25:56)n[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)]'

 

test.py

import.test

 

2.20、实用的内建函数

dir([obj])  显示对象的属性,如果没有提供参数,则显示全局变量的名字;

help([obj])  显示对象的文档字符串,如果没有参数,进入交互式帮助;

int(obj)  将一个对象转换为整数;

len(obj)  返回对象的长度;

open(fn, mode)  mode(‘r’=读,’w’=写,a)方式打开一个文件名为fn的文件;

range([[start,]stop[,step]])  返回一个整数列表。起始值为start,结束值是stop-1start默认值为0step默认是1

raw_input(str)  等待用户输入一个字符串,可以提供一个可选的str用作提示信息;

str(obj)  将一个对象转换为字符串;

type(obj)  返回对象的类型(返回值本身是一个type对象)

0 0
原创粉丝点击