本文共 6015 字,大约阅读时间需要 20 分钟。
关于学习环境,直接去官网下载一个windows安装包,傻瓜式安装就可学习了,
(1)
python,脚本解释型语言,
字节码,意思即脚本先编译成字节码,再在python的虚拟机中运行,
动态语义,即不用显示说明是int或者strnig,直接定义,比如a = ‘4’
缩进,python用缩进来表示层次关系,你可以理解为用缩进替代了花括号{},注意不同环境tab的空格数,
#coding=utf-8,不定义编码,中文就会报错,
单行注释用#,多行注视用双引号“”
包含自己写的模块,直接import 模块名,即可,不用py后缀,
一个语句太长,需要换行,就在末尾加反斜杠\,
(2)
一切数据都是对象,是数据和方法的集合,即c++中,有时候你需要自己设计对象的属性,以及它的相关方法,
一切变量都是数据对象的一个引用,
python内部的引用计数,用于把没有被引用的变量销毁,sys.getrefcount('hey'),就会得到引用计数,
删除变量,del 变量命,
伴随一生,
type,type(a),确定变量的数据类型,
help,比如你要用time模块,可是不会用,那就可以help(time),得到帮助文档,help(time.sleep),得到更具体解释,
dir,dir(time),
作业:
help(str),查看str的帮助文档,
lstrip(),是去除字符串前面空格,
rstrip(),是去除字符串后面空格,
strip(),是去除两边的空格,
upper(),是字符串大写,
lower(),是字符串小写,
type(a),得到变量类型,
(3)
环境搭建,并运行python版hello world。
(4)
ulipad开发环境搭建,
(5)
id(a),可以得到一个唯一的标识符,你可以理解为内存地址,
type(a),得到类型,
python里一切都是指针,所以你不用再考虑指针这个问题了,
基本数据类型,不可变,变量名是对数据的引用,可以有新的引用,但是数据本身不可修改,
整形,ps:python3以后好像不区分整形和浮点了,
布尔类型,Ture,False,注意大小写,
字符串,string,
ps:
a=3,b=3,id(a)==id(b),这就是不可变的真正意思,
a=3,id(a),a=4,id(a),这里id前后不同,
基本数据结构,可变,
列表,list,a=[1,2,3],
元组,tuple,a=(1,2,3),这个特殊不可变,
字典,dict,
ps:同上面ps的操作,你就明白这里的可变是什么意思了,
python里一切皆是指针,
然后,
变量之赋值一切皆为引用,动态性与动态类型之为何不再动态,
ps:意思就是整形和字符串相加,就不再是动态,
并且int(“cccc”),就没办法强行转换,
作业:
info=‘zzz’,
info[2]='c',不能通过数组的方式直接修改值,因为字符串是不可变的,
info.replace( 'z', 'n'),通过这种方式,返回的其实是一个新值,
不同类型相加,会报错,
(6)
python默认编码ascii,主要为美国人设计,所以写中文要加#coding=utf-8,
所以出现了unicode,而它仅仅是一套标准,不同国家有不同的实现,没办法交流,
所以utf-8就出现了,其实它就是unicode的一种实现,
通过len()得到的中文长度,是英文长度的3倍,不过python3好像没这个问题,
\',转义,
字符串可以通过类似数组的方式来操作,a[1],
字符串不用,系统就会销毁,
所以"adfdf"+"sdfdf",就可能涉及字符串的创建以及销毁,特别不推荐的做法,
字符串拼接这样写,"string %s"%"pinjie", ps:%s代表占位符,%d
或者使用str中的join()方法,
文件操作,
d=open('a.txt','w')
d.write( 'hi')
d.close()
有可以直接help(d),查找帮助文档,晕,太直接了,cool,
作业:
a=“abcd”
a[3]或者a[-1]
字符串拼接可以直接用+号来做,也可以通过%s占位符的方式来做,还可以通过join()字符串操作函数,
(7)
format的使用,
s = "this is %s %s"%("my", "iphone")
b = "this is {} {}".format("my","ipad")
c = "this is {1}{0}".format("my","ipod")
文件读写标准库,而且你可以看到这个库的源代码,
import linecache
linecache.getline("tmp.txt", 1)
作业:
c = "my name is {a}, i love {b}".format( a='pyer', b='apple')
c = "my name is %(a)s, i love %(b)s" %{ 'a':'pyer', 'b':'apple'},注意%(a)s的这个s,
(8)
作业解答,
s[2:4]
s.replace('am','ma')
False
d=open('c:/test.txt','r')
s=d.read()
l=len(s),测试文本长度,
content.replace('\n','')用空替代换行,就是清除换行,
s='1234'
sys.getrefcount('1234'),结果等于4,
(9)
列表可以嵌套,a=[ [1,2,3], [ 4,5,6] ],然后可以仿佛数组一样调用a[0][0],
(10)
a='abc'
list(a),结果是【'a','b','c'】
range和xrange的区别,后者会生成一个对象,
一个列表推导式,
>>> [ x*x for x in range(100)][0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401, 2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249, 3364, 3481, 3600, 3721, 3844, 3969, 4096, 4225, 4356, 4489, 4624, 4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084, 6241, 6400, 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744, 7921, 8100, 8281, 8464, 8649, 8836, 9025, 9216, 9409, 9604, 9801]>>>
>>> [(x,y) for x in range(2) for y in range(2)][(0, 0), (0, 1), (1, 0), (1, 1)](11)
元组因为不可变,所以也可以保证数据的安全,
集合,因为没有顺序,所以没有办法按照索引来操作,
b = set(‘abc’),打印的话,顺序方面可能是b,a,c,
b.add(4),
b.remove(4),
b.update(),
成员关系判断,in,not in,
求交并补,去除重复,都可以,因为是集合嘛~
(12)
字典内部没有顺序,通过键来存取,键必须是不可变类型,比如字符串,
dic = {'hey':'man'}
(13)
b = [1,2,3,4,5],输出下面的结果:[1,2,3,4,5,6,7,8]
##方法1: c = b + [6,7,8] ##方法2 b.extend([6,7,8])列表b = [1,2,3,4,5],
输出[5,4],
print b[-1:-3:-1]
b = [23,45,22,44,25,66,78],生成所有奇数组成的列表,
print [m for m in b if m % 2 == 1],
关于集合的操作,
>>> set1 = set('123')>>> set2 = set('abc')>>> set1{'1', '3', '2'}>>> set2{'a', 'b', 'c'}>>> set1.add('abc')>>> set1{'1', '3', 'abc', '2'}>>> set1 & set2set()>>> set1 | set2{'c', 'b', '1', '3', 'abc', 'a', '2'}
##习题7:用字典的方式完成下面一个小型的学生管理系统。
##1 学生有下面几个属性:姓名,年龄,考试分数包括:语文,数学,英语得分。 ##比如定义2个同学: ##姓名:李明,年龄25,考试分数:语文80,数学75,英语85 ##姓名:张强,年龄23,考试分数:语文75,数学82,英语78分 studentinfo = {'liming':{'name':'李明','age':25,'fenshu':{'chinese':80,'math':75,'english':85}}} studentinfo['zhangqiang'] = {'name':'张强','age':23,'fenshu':{'chinese':75,'math':82,'english':78}}(14)
bin(10),得到的是对应的二进制,
hex(10),得到对应16进制,
计算硬盘的容量,比如系统给的是kb单位的大小,1024,
1024>>10,得到1,即1M,
(15)
不同数据结构相互转换,
>>> a =( 1,2,3,4)>>> a(1, 2, 3, 4)>>> a = list(a)>>> a[1, 2, 3, 4]>>> a = tuple(a)>>> a(1, 2, 3, 4)
(16)(17)
python没有switch语句,
(18)
str.swapcase(),这种方法也有,大写字母转小写,反之亦然,
>>> a = "aAsmr3idd4bgs7Dlsf9eAF">>> print( ''.join( [ s for s in a if s.isdigit()]))3479>>> #取出a中的数字,并生成一个新的字符串>>> print( '1'.join( [ s for s in a if s.isdigit()]))3141719>>>
1、join()函数
语法: 'sep'.join(seq)
参数说明
sep:分隔符。可以为空 seq:要连接的元素序列、字符串、元组、字典 上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串返回值:返回一个以分隔符sep连接各个元素后生成的字符串
>>> a = "aAsmr3idd4bgs7Dlsf9eAF">>> a = a.lower()>>> print( dict( [ (x,a.count(x)) for x in set(a)])){'f': 2, 'd': 3, '7': 1, 's': 3, 'r': 1, 'g': 1, 'a': 3, '4': 1, 'l': 1, 'm': 1, 'i': 1, '9': 1, 'e': 1, 'b': 1, '3': 1}>>> #统计各个字母出现的次数,并以字典的形式保存,>>>
>>> a = "aAsmr3idd4bgs7Dlsf9eAF">>> a_list = list(a)>>> set_list = list( set( a_list))>>> set_list.sort( key=a_list.index)>>> #去除同一字母重复的部分,并保持原来的顺序,>>> set_list['a', 'A', 's', 'm', 'r', '3', 'i', 'd', '4', 'b', 'g', '7', 'D', 'l', 'f', '9', 'e', 'F']>>> print( ".".join( set_list))a.A.s.m.r.3.i.d.4.b.g.7.D.l.f.9.e.F>>>
去除a字符串内的数字后,请将该字符串里的单词重新排序(a-z),并且重新输出一个排序后的字符 串。(保留大小写,a与A的顺序关系为:A在a前面。例:AaBb)
请判断 'boy'里出现的每一个字母,是否都出现在a字符串里。如果出现,则输出True,否则,则输 出False.
在python命令行里,输入import this 以后出现的文档,统计该文档中,"be" "is" "than" 的出现次数。
(19)
字典若是有重复的key,取最后德,
>>> a = { 'key1':'value1', 'key2':'value2'}>>> for i in a.keys(): print(i) key1key2>>> for i in a.values(): print(i) value1value2>>> for i in a.items(): print(i) ('key1', 'value1')('key2', 'value2')>>> #上面的是基本的操作,下面教你如何对无序的字典进行排序对无序的字典排序,把你希望排序的依据抽取出来用sort方法排序,在输出的时候,以排序的内容为顺序,通过键值对的联系输出另一个值,
key_list = list(a.keys())
key_list.sort()
for x in key_list:
print x,a【x】
(20)
python是解释执行,不过函数自己是不会执行的,你得手动调用,
def a():
print('a')
return 0
a()
进阶篇,
(02)
pass代表一个空语句,但是不能像C中那样不写,
函数没有返回值,代表返回None,
(03)(04)(05)(6)(07)(8)9,10,11,12,(13)
empty。
(14)
转载地址:http://rqbcn.baihongyu.com/