python基础学习笔记

#-*- 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




你可能感兴趣的:(python基础学习笔记)