#-*- coding:utf-8 -*- # 变量(variable) print '**********************************************************' i=7 print i # 字符串 # 单引号 print '**********************************************************' c1 = 'gf' print c1 c2 = 'It is a "dog"' #双引号会输出来 print(c2) # 双引号 print '**********************************************************' c1 = "gf" print c1 c2 = "It is a 'dog'" print(c2) # 三引号 print '**********************************************************' c = '''he she you hello''' print c # 转义符 print '**********************************************************' c2 = 'It is a \'dog\'' print(c2) print 'hello \nhow are you' # 自然字符串 print '**********************************************************' print 'hello \nhow are you' print r'hello \nhow are you' #加个r,转义了也能原样输出 # 字符串的重复 print '**********************************************************' print 'hello gril\n'*3 # 子字符串 print '**********************************************************' c1 = 'giantbranch' print(c1[0]) print(c1[5]) print(c1[:2]) print(c1[2:]) print(c1[2:7]) # 列表 print '**********************************************************' student = ['gaint', 'branch', 'james', 'john', 'jerry'] print(student[3]) student[3] = 'haha' print(student[3]) # 元组 print '**********************************************************' student = ('gaint', 'branch', 'james', 'john', 'jerry') print(student[3]) #student[3] = 'haha' # print(student[3]) #报错 # 集合(set) print '**********************************************************' a = set('aaabcdefg') b = set('efg') ##交集 x = a & b print x ##并集 x = a | b print x ##差集 x = a - b print x ##去除重复元素 new = set(a) print new # 字典(关联数组) print '**********************************************************' dic = {'name':'giantbranch','home':'guess','hobby':'sport'} print dic['home'] ##添加字典里的项目 dic['add'] = 'test add' print dic['name'] print dic['add'] # 标识符 print '**********************************************************' vid = '233' print vid # 开头不能为数字,报错 # 2vid = 'gfdgdf' # print 1vid _id = 'test' print _id # pickle腌制 print '**********************************************************' import pickle ##dumps(object)将对象序列化 list1 = ["james", "giant", "branch"] list2 = pickle.dumps(list1) print list2 ##loads(string)将对象原样恢复,并且对象类型也恢复原来的格式 print '**********************************************************' list3 = pickle.loads(list2) print list3 ##dump(object, file) 将对象存储到文件里面序列化 group = ('baidu', 'google', 'yahoo') fp = file('1.txt', 'wb') #w:write b:binary(二进制文件) pickle.dump(group, fp, True) fp.close() ##load(object, file)将dump()存储在文件里面的数据恢复 print '**********************************************************' fp1 = file('1.txt', 'rb') #r:read group1 = pickle.load(fp1) fp1.close() print group1 # 逻辑行与物理行 print '**********************************************************' ##以下是三个物理行 print '123' print '456' print '789' ##以下是1个物理行,3个逻辑行 print 'cba';print 'ddd';print 'nihao' ##以下为1个逻辑行,3个物理行 print '''hah di 3 ''' ###一个物理行含有多个逻辑行,中间要用分号隔开 # 行连接 print '**********************************************************' print "i am\ you" ##上面没\就会报错 #缩进 print '**********************************************************' a = 1 # print a #报错 #如何缩进 ##一般情况下,行首应该不留空白 import sys ##缩进的方法有两种,可以空格,也可以按tab键 ##if语句缩进方法 a=3 if a > 0: print 'hi' ##while语句缩进方法 print '**********************************************************' a = 0 while a < 3: print a a+=1 ####注释: 当行注释用#号 ,多行注释用3引号 , #"""可以用作注释用途,但是它不等价于注释。 ''' hahahhahahah print("我在注释里") print ("我还在注释里") ''' #运算符 print '**********************************************************' ##'+':两个对象相加 ###数字相加 print 5+6 ###字符串相加(连接) print "Good,"+"hi" print '**********************************************************' ##'-':取反或两个数字相减 print -5 print 8-6 print '**********************************************************' ##'*'两个数相乘或重复 print 5*6 print 'A'*5 print '**********************************************************' ##'*'两个数相除 print 7/2 #结果为3 print 7/2.0 #结果为3.5 print '**********************************************************' ##'**'求幂运算 print 2**3 #2的三次方=8 print '**********************************************************' ##'<':返回一个bool值 print 2>3 #False ##'<=':返回一个bool值 print 3<=3 #True ##'>':返回一个bool值 print 9>7 #True ##'>=':返回一个bool值 print 5>=6 #False ##'!=':返回一个bool值 print 1 != 2 print 1 != 1 ##'==':返回一个bool值 print 8==7 #False print 'he'=='he' #true print '**********************************************************' ##'//':除法运算,返回其商的整数部分,舍去余数 print 9//2.0 #4.0 ##'%':除法运算,返回其商的余数部分,舍去商 print 9%2 print 4%2 #0 print '**********************************************************' #'&':按位与运算,所谓的按位与是指一个数转化为二进制,然后这些二进制数按位来进行与运算 print 8 & 17 #结果为0 ''' 8: 01000 17:10001 &: 00000 ''' print '**********************************************************' #'|':按位或运算,所谓的按位或是指一个数转化为二进制,然后这些二进制数按位来进行或运算 print 8 | 17 #结果为11001,即25 #'^':异或 print 9 ^ 17 #24 #'~':按位翻转, ~x = -(x+1), 不懂请看 http://www.zybang.com/question/fd3efaf5df51304072fc757b550deeb1.html print ~8 #-9 print '**********************************************************' #'<<':左移,相当于乘以2的n次幂 print 8<<1 #16 #'>>':右移,相当于除以2的n次幂 print 16>>3 #2 print '**********************************************************' #not:逻辑非 print not True #False print '**********************************************************' #and:逻辑与 print True and True print '**********************************************************' #or:逻辑或 print False or True #优先级实战,优先级排行榜 print '**********************************************************' #第1名:函数调用,寻址,下标 #第2名:幂运算 ** print 4*2**3 #第3名:翻转运算 ~ #第4名:正负号 print 2+4*-2 #第5名:*,/,% print 2+4*2/4 #第6名:+,- print 3<<2+1 #第7名:<<,>> #第8名:按位&,|,^ #第9名:比较运算符 print 2*3+5<=5+1*2 #第10名:逻辑的not,and,or #第11名:lambda表达式 #控制流 #控制流功能 ##重复执行3段同样的程序 #方式1: print '**********************************************************' i=0 print i i=i+1 print i i=0 print i i=i+1 print i i=0 print i i=i+1 print i #方式2: print '**********************************************************' for k in range(0,3): i=0 print i i=i+1 print i #控制流分支结构 print '**********************************************************' a = 2 if a == 2: print '2b' else: print '可以啊' #控制流的三种类型:顺序结构,分支结构,循环结构 #顺序结构 print '**********************************************************' a = 2 print a a = a-1 print a #分支结构 print '**********************************************************' a = 4 if a==6: print '666' else: print 'bitch' #循环结构 print '**********************************************************' a = 3 while a: print 'hello' a = a -1 #if语句 print '**********************************************************' a = 2 #1 if a!=2: print 'right' #2 if a>5: print '>5' elif a==5: print '==5' else: print '<5' #while语句 print '**********************************************************' #1 # b = True # while b: # print 'hello' #2 #while判断为False,退出循环,然后执行一次else b = False while b: print 'hello' else: print 'False' #if语句 print '**********************************************************' #格式 # for i in 集合: # 执行该部分 # else # 执行该部分 #1(输出集合元素) for i in [1,2,8,7]: print i #2(控制输出次数) # print '**********************************************************' # print range(1,5) print '**********************************************************' for i in range(1,5): print 'hello' #3(第三那个参数为间隔)输出1,3,5,7,9, for i in range(1,10,2): print i #4 print '**********************************************************' for i in range(1,10): if i%2 == 0: print i print '偶数' else: print i print '奇数' #break语句(退出循环) print '**********************************************************' #1 a = 1 while a: print a a = a + 1 if a == 6: break #2 print '**********************************************************' for i in range(5,9): print i if i > 6: break #3 print '**********************************************************' a = 10 while a <= 12: a = a + 1 for i in range(1,7): print i if i == 3: break #4 print '**********************************************************' a = 10 while a <= 12: a = a + 1 for i in range(1,7): print i if i == 3: break if a == 11: break #continue语句(跳到下一次循环) print '**********************************************************' #1 a = 2 while a < 7: a = a + 1 if a == 3: continue if a == 4: continue print a #函数 #系统自带函数 print '**********************************************************' ##计算字符串长度 print len("hello nihao") ##字符串切割 a = 'hacker' b = a.split("c") #分成列表 print b ##自定义函数 #格式 # def 函数名(): # 自己写功能 print '**********************************************************' def a(): print 'hello';print 'hacker' a() print '**********************************************************' #什么是形参 def func(a ,b): print a + b #什么是实参 func(1,7) #关键参数 print '**********************************************************' def func2(a = 1, b =2, c =3): print a print b print c func2(5) func2(b=7,a=8) func2(b=4,c=2,a=1) #全局变量与局部变量(在函数中加global声明为全局变量,我在学php的时候不推荐在函数中声明全局变量,应该都一样的吧) print '**********************************************************' def funcquan(): global i i =7 print i i = 9 print i funcquan() i = 9 print i #返回值 print '**********************************************************' def add(a,b): return a+b print add(5,6) #多个返回值 def morereturn(i,j): k = i*j return (i,j,k) #1 x = morereturn(4,6) print x #2 print '**********************************************************' y,z,m = morereturn(4,6) print m #文档字符串(在函数开头加注释) print '**********************************************************' def docString(i,j): '''这个函数实现一个乘法运算 :param i: 第一个乘数 :param j: 第二个乘数 :return:乘法结果 ''' k = i * j; return k print docString.__doc__ #输出文档字符串 print '**********************************************************' help(docString) #输出文档字符串 #模块 #这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块 #模块就是一些函数和类的集合文件,可以打开python的Lib目录看看里面的文件 print '**********************************************************' #导入模块 import math print math.pi #sys模块(跟系统功能有关) # import sys print '**********************************************************' ##查看python版本信息 print sys.version ##查看Python的安装目录 print sys.executable ##操作系统的版本 print sys.getwindowsversion() ##sys.modules是一个全局字典,该字典是python启动后就加载在内存中。每当程序员导入新的模块,sys.modules都将记录这些模块。字典sys.modules对于加载模块起到了缓冲的作用。当某个模块第一次导入,字典sys.modules将自动记录该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。 print sys.modules.keys() #输出已导入模块的关键字 print '**********************************************************' #字节编译:将模块编译成二进制语言程序的过程,它是由python解析器去完成的 #.pyc文件就是模块编译后对应的二进制文件 #.pyc文件的生成 #比如我们写了自己的一个模块,我们用import导入,解析器先去寻找看看有没有.pyc文件,有就直接用,没有就将.py文件通过字节编译成.pyc文件 print '**********************************************************' #from .... import from sys import version #只导入模块的某个功能,而不用像上面的那样要写sys.version了 print version print '**********************************************************' #from .... import * 导入模块的所有方法 from math import * print pi print cos(pi) print '**********************************************************' #主模块:自己执行,不是被调用 print __name__ #输出 __main__ #非主模块:被别人import的 #__name__属性:属性若为__main__,就是主模块,否则为非主模块 print '**********************************************************' if __name__ == "__main__": print "It's main" else: print "It's not main" #若本文件被import,就会输出else的内容 print '**********************************************************' #自定义模块(用户自己定义的):将自己编写的函数或者类写在.py文件中,然后放在python目录下的Lib目录或者工程的当前目录 #例 import myModel print add(5,6) ##其中myModel.py的代码如下,文件放在当前目录即可 # def add(a, b): # return a+b print '**********************************************************' #dir()函数:查看指定模块的功能列表 import sys print dir(sys) print '**********************************************************' import math print dir(math) print '**********************************************************' #dir()扩展:还能查看指定对象的功能列表 l = [] #这是一个空列表 print dir(l) #查看列表有什么方法 # 数据结构 ##python内置的数据结构有列表,元组,字典等 print '**********************************************************' # 现有三个物品,分别是"apple","orange","pear",现在要将三个物品储存起来 # 储存方式1:按顺序分别存储到一个柜子中,这些物品可以取出来,放新的物品 ["apple","orange","pear"] #列表 # 储存方式2:按顺序分别存储到一个柜子中,这些物品不可以取出来,也不可跟新物品同挤一个柜子 ("apple","orange","pear") #元组 # 储存方式3:按顺序分别存储到一个柜子中,而且每个柜子得有个名称 {"a":"apple","b":"orange","c":"pear"} # 栈 print '**********************************************************' #栈的实现 class Stack(): # 构造方法 def __init__(st, size): st.stack = [] #可以看出栈是在列表上做限制而成的 st.size = size #栈的大小 st.top = 0 #栈顶初始值为0 def push(st, content): if st.Full(): print "Stack is Full" else: st.stack.append(content) st.top = st.top + 1 def pop(st): if st.Empty(): print "Stack is Empty!" else: st.top = st.top -1 def Full(st): if st.top == st.size: return True else: return False def Empty(st): if st.top == 0: return True else: return False #使用Stack testStack = Stack(8) print testStack.Empty() #True testStack.push("Hello") print testStack.Empty() #False testStack.pop() print testStack.Empty() #True print '**********************************************************' # 队列(一端插入(队尾),一端删除(队首),想想排队就好) print '**********************************************************' # 队列的实现 class Queue(): def __init__(qu, size): qu.queue = [] qu.size = size qu.head = 0 qu.tail = 0 def Empty(qu): if qu.head == qu.tail: return True else: return False def Full(qu): if qu.tail - qu.head == qu.size: return True else: return False def enQuene(qu, content): if qu.Full(): print "Quene is Full!" else: qu.queue.append(content) qu.tail = qu.tail + 1 def outQuene(qu): if qu.Empty(): print "Quene is Empty!" else: qu.head = qu.head + 1 # 使用队列 q = Queue(3) print q.Empty() #True q.enQuene('1') q.enQuene('2') q.enQuene('3') print q.Empty() #False print q.Full() #True q.outQuene() q.outQuene() q.outQuene() print q.Empty() #True