码迷,mamicode.com
首页 > 编程语言 > 详细

python学习笔记(1-6)

时间:2016-04-23 07:48:22      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:python   键盘   

《python核心编程》学习笔记

if __name__ == ‘__main__‘:


一、二、三

获得键盘输入
  1、raw_input(‘‘)
  2、sys.stdin.readline()

strip()取出2边的空格。

3<5>4 等同于 (3<5)and(4<5),这个可是当初C语言入门的时候经常叮嘱的经典错误呀!想不到在这里被实现了,再也不是错误了,呵呵。

print 和c里面的printf基本一致。
  print "str %s , int %d"%(‘str1‘,456)

对字符串构造也可以使用,类似sprintf,或者CString.format
  str2 = "int %d"%(123)
  str2 = ‘int 123‘

列表(list) 中括号[] 可以改元素
  表列(tuple)小括号() 不可以改元素,相当于常量
  字典(disk)大括号{} 第二项可改

a=[1,2,3,4]
  >>>a[2:]
  [3,4]
  >>>a[:3]
  [1,2,3]

dist1={}
  dist1.keys()

>>> range(9)
  [0, 1, 2, 3, 4, 5, 6, 7, 8]
  for i in range(9):
  等同于
  while i<9:
   i++

>>>print 1,2,3
  1 2 3
  逗号可以连接字符串,但是添加一个空格

# 注释
  \n 换行
  \ 续行
  ; 同行2语句
  : 分割标题行和后续语句
  ‘‘‘ ‘‘‘ 文档,可以随意换行

del 删除引用,如果是把内置函数给重新设置了引用,del后回归默认。不能删除内置函数。
  比如 dir=‘123‘那么dir就失去了原来的作用,当del dir后,回归原始作用。

id(x)显示某个对象的引用id
  dir(x)显示某个对象的信息
  dir()无参使用,显示当前的全局对象和局部对象
  type(x)显示对象的类型,没有赋过值的是NoneType

import sys 获得模块
  from sys import exit 获得模块的某个函数

0为假1为真

字符串可以类似char[]
  mysting = ‘123‘
  mystring[0]//为1
  mystring[-1]//为最后一个值3

类似C,如果定义几个同意内容字符常量,那么内存地址都一致
  mystr1=‘123‘
  mystr2=‘123‘
  id(mystr1)==id(mystr2)

else if 为elif表示

没有switch case

打开文件为open(filename,mode),不需要包含库。

**表示乘方。

交换2个值很简单,(x,y)=(y,x)就可以了

-------------------------------------------------------------------------------------
四、对象

a1=a2=111
  a1和a2的引用id相同,即id(a1)==id(a2)或a1 is a2
  这里如果a3=111,那么a3和a1,a2的id相同,估计是查了全部对象。
  如果a1=110或者a1+=1,那么a1的id就改变了。
  如果是复杂一点的,比如列表,就不能配对了。c1=[1,2,3] c2=[1,2,3],2者id不相同。
  列表某项改变,不影响列表的id,但是该项的id就变了。
  c1[1]=4 那么c1[1]的id变了,但是c1的id没变。

对于id的比较,可以直接用is:a=1;c=a;a is c >>True
  常量也同样有id:a=1;id(a)==id(1) >>True 
  a is 1 >>True 
  1 is a>>True
  但是2个常数之间不能用is比较,但是2个字符串可以用is。

cmp 比较2个id的大小,id相同不一样数值相同(如列表),id不同也不代表值不同。
  repr和str的作用在表面基本一致,但是具体差别就是repr还可以用eval恢复,没看明白,存疑。

python没有bool、byte、指针。
  int就是32位,没有short。
  float就是双精度,没有单精度了。

-------------------------------------------------------------------------------------
五、数字


没有i++

整数都是32位。
  长整型无限长度。后加L
  浮点可以用e,如4.3e25
  复数可以用64.1+1.5j 实数real,虚数imag,全部conjugate()

5.51节有个错误,就算是999999*999999,也不会出错,自动转换成了长整型。

~取反 为-(num+1)
  <<左移 >>右移 ^异或

int,long,float,complex用来转换,对复数取2个值的平方和。
  abs绝对值 coerce协调2个数字为同一类型coerce1(1,2L) (1L,2L)
  divmod除法和取余 divmod(10,3) (3,1)
  pow 和**一样,是乘方运算。
  round 把浮点型变成最接近的整数,四舍五入 round(3) 3.0 round(3.49) 3.0 round(3.49,1) 3.5 round(-.5) -1
  math.floor 退一法

整数才能用的函数:hex oct 转换16、8进制 ord 字母转数字 chr 数字转字母

random 随机函数的模块:
  ranint(a,b) a到b的整数,包括a、b,即a<=x<=b
  uniform(a,b) a<=x<b //这个是浮点数
  random()返回[0,1)之间的浮点数
  randrange(1,10)返回1到9的值。
  randrange(1,12,2) 返回从1(1+2*0)到9(1+2*4)的值。
  choice(‘asd\n‘)返回一个随机字符
  choice([‘abc‘,‘dfg‘,‘123‘])返回其中一个字符串
  sample(‘asd\n‘,2)用list返回2个随机字符,顺序可颠倒。不过同样位置上的值不会出现2次,因此第二个参数不能大于字符串的长度。所以有什么允许重复的时候会比较麻烦,但是可以给的第一参数里面带有重复的字符串来解决这个问题。
  如果要随机组成字符串,需要使用string。string.join(random.sample(‘1234567890asdf‘,5)).replace(‘ ‘,‘‘)
shuffle(list)可以打乱list里的元素顺序。

-------------------------------------------------------------------------------------


六、序列

in,not in
  a + b
  a * 4
  a[3]

a=[1,2,3,4] 则 a[0]~a[3]或a[-4]~a[-1]
  len 显示长度
  list 转换seq为列表
  tuple 转换seq为表列
  min,max 返回最大最小
  str 转换为字符串

for循环有个else,如果是循环结束而不是break则执行这个else

%c 字符
  %s 字符串
  %i %d 带符号的十进制
  %u 不带符号的十进制
  %o 八进制
  %x 小写16进制
  %X 大写16进制
  %e %E 乘方记号
  %f 浮点
  %g %G 浮点和乘方比较短的格式


string.find(‘1231‘,‘1‘) 查找字符返回位置 0

python的字符串不以\0结束。
  >>>str1=‘\0\0\01‘
  >>>str1
  ‘\x00\x00\x01‘
  不过实际长度还是3个元素。
  len(str1)//3
  str1[2]//0x01
  str1.find(‘1‘)//-1
  str1.find(‘\01‘)//2
  str1.find(‘\x01‘)//2

列表list通过append添加新元素
  通过remove以元素的值做参数删除元素,如果有2个一样的值,则删除前一个。如果参数是位置而不是元素的值,按照位置删除用del a[1]
  通过pop弹出最后一个值并删除之。(pop(0)则抛出第一个值并删除之)
  通过extend合并其他列表。
  通过*倍增元素。
  长度可以len([1,2])【书上有误,不可以[1,2].__len__】
  reverse颠倒列表,注意这个不是输出一个颠倒的列表,而是真正把列表颠倒。
  sort排序列表,从小到大。默认是快速排序。
  count一个元素的值,返回在list里有多少个同样的值。
  index比较复杂些,index(4,1,5),查找元素值为4的元素的第一个位置,这个位置必须在[1,5)之间。否则出错,所以使用这个函数当需要try与except包含才可以用,因为它不返回-1。就算只使用第一个参数,如果没有这项,同样是抛出异常,而不是返回-1 。

表列tuple可以添加【tuple1+=(1,1,)】,倍增,但是不能删除和替换。
  但是这里不能加只有一个元素的表列,因为一个元素的表列的属性不是表列,如果要建设单元素的表列,就加个逗号。,如(1,)。
  如:type((1))为int,但是列表不是,如:type([1])为list。
  另,表列中如果有子列表,那么这个子列表是可以修改的,如t=([1,2],3,4) t[0][1]=22 这个是允许的。

str(x) list(x) tuple(x)可以将3者相互转化,不过str(list或tuple),list(tuple),tuple(list)都比较正常,但是将字符串转换为list或者tuple就很麻烦了,因为每个括号、逗号、引号都变成了单独的元素。

list之间可以使用==判断是否相同,这样比较的是具体的值,而不是id。list的id不用,但是具体的值相同,==结果为真。但是用is则为假。

子函数可以返回多个参数,如:
  def foo1():
   return a1,a2,a3
  那么接受就可以写作 x1,x2,x3=foo1() 分别进行接受。感觉这个很不错哦,方便很多呀。

copy模块:一般操作的赋值,都是浅copy,只是把引用ID设置成同一个值。copy.copy()也是浅copy,copy.deepcopy()是深copy,真正的2个对象。

没有字符变量,只有长度为1的字符串。其实字符串就是tuple,不可替换成员。
  对于判断是不是大写字母,数字等,可以import string
  string.uppercase string.lowercase string.letters string.digits
  用not in 和in来判断。
  string里有用的很多,最常用的就是join(把列表变成字符串,第二个参数决定间隔字符),split(返回一个list,为分割后的字符串)。具体见P122

如果在引号前面加上r,则可以取消\开始的特殊效果。
  print ‘\x66‘ //f
  print r‘\x66‘ //\x66
  如果是unicode,则使用ur

其他的一些模块:re(匹配字符串),struct(构造发包报文时最常用),c/StringIO(字符串缓冲区对象,行为类似文件),crypt(单向加密编码功能,仅linux使用),rotor(多平台编码解码服务)


本文出自 “飞翔正义的博客” 博客,请务必保留此出处http://xzq2000.blog.51cto.com/2487359/1766835

python学习笔记(1-6)

标签:python   键盘   

原文地址:http://xzq2000.blog.51cto.com/2487359/1766835

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!