zoukankan      html  css  js  c++  java
  • python基础 [Alex视频]

    vi hello.py
    #!/usr/bin/env python
    print "hello world!"
    while True:
    print("hello world!")


    python(进入python)
    import hello(导入hello模块)
    会生成pyc文件,编译器产生的文件,用c语言继续执行


    1.编程风格
    1.1python缩进统一
    1.2变量(第一个字符必须是字母或_,可有字母,_和数字组成,大小写敏感)
    1.3运算
    1+1/2*3-5
    2**6
    3>5
    A<=B
    1.4赋值
    first_name = 'Alex'
    Age = 27
    next_year_age = Age + 1
    user_name = first_name + 'Woo'
    1.5引号(注释)
    'hello world!'
    "Hello,My name's Bruce Woo"
    '''Hello,My name's Bruce Woo,
    This is my first time to be here
    What's your name?
    '''


    2.导入模块
    import moduleName #导入模块
    from module import sayHi #导入方法
    import moduleName as newName


    3.用户交互raw_input()
    3.1raw_input
    name = raw_input('please input your name:').strip()
    age = int(raw_input("input your age:"))
    sex = raw_input("input your sex:")
    3.2格式化输出
    message = ''' Information of the company staff:
    Name : %s
    age : %d
    Sex : %s
    Dep : %s
    ''' % (name,age,sex,dep)
    print message

    4.流程控制
    4.1 if exp:...elif exp:...else:...
    4.2 for i in range(1,100)
    4.3 While True:
    break
    continue

    作业:
    编写可供用户查询的员工信息表!
    提供格式化查询接口
    允许用户添加或删除员工信息

    5.文件处理
    python中对文件处理需要涉及到os模块和shutil模块
    得到当前工作目录路径:os.getcwd()
    获取指定目录下的所有文件和目录名:os.listdir(dir)
    删除文件:os.remove(file)
    删除多个目录:os.removedirs(r"/home")
    检测路径是否为文件:os.path.isfile(path)
    检测路径是否为目录:os.path.isdir(path)
    判断是否为绝对路径:os.path.isabs(path)
    检测路径是否存在:os.path.exists(path)
    返回一个路径的目录名和文件名:os.path.split(path)
    分离扩展名:os.path.splitext(file)
    获取路径名:os.path.dirname(file)
    获取文件名:os.path.basename(file)
    运行shell命令:os.system(command)
    读取和设置环境变量:os.getenv()与os.putenv()
    给出当前平台的行终止符:os.linesep (windows为 ,linux为 ,Mac为 )
    指示你正在使用的平台:os.name (windows为nt,linux为posix)
    重命名:os.rename(old,new)
    创建多级目录:os.makedirs(r"c:python est")
    创建单个目录:os.mkdir("test")
    获取文件属性:os.stat(file)
    修改文件权限与时间戳:os.chmod(file)
    终止当前进程:os.exit()
    获取文件大小:os.path.getsize(filename)

    文件操作:
    文件内容替换
    for line in fileinput.input("filepath",inplace=1):
    line = line.replace("oldtext","newtext")
    print line,

    os.mknod("text.txt") 创建空文件
    fp = open("text.txt",'w') 直接打开一个文件,如果不存在则创建文件
    关于open模式:
    w 以写的方式打开(如果文件存在会清空文件内容)
    a 以追加的模式打开(从EOF开始,必要时创建新文件)
    r+ 以读写模式打开
    w+ 以读写模式打开(参见w)
    a+ 以读写模式打开(参见a)
    rb 以二进制模式打开
    wb 以二进制模式打开(参见w)
    ab 以二进制追加模式打开(参见a)
    rb+ 以二进制读写模式打开(参见r+)
    wb+ 以二进制读写模式打开(参见w+)
    ab+ 以二进制读写模式打开(参见a+)

    fp.read([size]) #size读取长度,以byte为单位
    fp.readline([size]) #读一行,如果定义了size,有可能返回的只是一行的一部分
    fp.readlines([size]) #把文件每一行作为一个list的一个成员,并返回这个list其实它的内容是通过循环调用readline()实现的,如果提供size参数,size表示读取内容的总长,也就是说可能只读到文件的一部分
    fp.write(str) #把str写到文件中,write()并不会在str后加上一个换行符
    fp.writelines(seq) #把seq内容全部写道文件中(多行一次性写入),不会加任何东西
    fp.close() #关闭文件。python会在一个文件不用后自动关闭,不过这一功能没有保证
    fp.flush() #把缓冲区的内容写入磁盘
    fp.fileno() #返回一个长整形的文件标签
    fp.isatty() #文件是否是一个终端设备文件
    fp.tell() #返回文件操作标记的当前位置,以文件的开头为原点
    fp.next() #返回下一行,并将文件操作标记位移到下一行
    fp.seek(offset[,whence])#将文件操作标记移到offset的位置,这个offset一般是相对于文件的开头来计算的,一般为正数,但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算,2表示以文件末尾为原点计算。需要注意,如果文件以a或a+模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾
    fp.truncate([size]) #把文件裁成规定的大小,默认的是裁到当前文操作标记的位置

    目录操作:
    os.mkdir("file") #创建目录
    shutil.copyfile("oldfile","newfile") #oldfile和newfile只能是文件
    shutil.copy("oldfile","newfile") #oldfile只能是文件夹,newfile可以是文件或目标目录
    shutil.copytree("olddir","newdir") #复制文件夹,newdir必须不存在
    os.rename("oldname","newname") #重命名文件或文件夹
    shutil.move("oldpos","newpos") #移动文件或目录
    os.remove("file") #删除文件
    os.rmdir("dir") #只能删除空目录
    shutil.rmtree("dir") #有内容或空目录都可以删
    os.chdir("path") #换路径

    6.列表(可重复,可修改)
    语法:shoppinglist=['car','clothes','book']
    添加:shoppinglist.append(100)
    插入:shoppinglist.insert(2,'apple')
    修改:shoppinglist[2]='plane'
    求大小:len(shoppinglist)
    删除元素:shoppinglist.pop(3)
    删除元素:shoppinglist.remove('apple')
    排序:shoppinglist.sort()
    倒序:shoppinglist.reverse()
    统计:shoppinglist.count('car')
    获取位置:shoppinglist.index('apple')
    列表的分割:a =[1,2,3,4,5]
    a[1] #2
    a[1:] #2,3,4,5
    a[:1] #1
    a[:-1] #1,2,3,4
    字符串变成列表:
    a='A B C = * 8 3 5 + 23 45'
    a.split()
    a.split('=')


    7.元组(可重复,无法修改)
    语法:namelist=('a','b','c')
    统计:namelist.count('a')
    获取位置:namelist.index('b')

    练习:
    让用户输入工资
    输出购物菜单及产品价格
    计算用户是否可支付
    输出用户剩余的钱,问用户是否继续购物,如果选择继续,继续进行,直到钱不够
    如果不够,输出用户还需工作多久才能买的起


    8.字典
    语法:DicName = {"banana":"4","orange":"3.8"}
    查看key:DicName.keys()
    查看value:DicName.values()
    添加:DicName['apple']='5'
    删除:DicName.popitem() #默认删除第一个
    删除:del DicName['banana']
    修改:DicName['orange']='3'
    查询:DicName.has_key('orange')
    遍历:for k,v in DicName.items():print k,v

    (' '.join(v) 把列表v转换为字符串并以空格分隔)


    练习:
    创建公司员工信息表,员工号,姓名,邮件,部门,职位,手机
    提供用户查询接口,通过员工号查询用户信息


    9.函数
    函数好处:程序可扩展性、减少程序代码、方面程序架构的更改
    定义函数:
    def sayHi(name,age=0):
    print "hello %s"%name
    调用函数:
    sayHi('Bruce',23)
    sayHi('Bruce')


    作业:
    信用卡程序
    功能要求(必须):
    1.额度15000,不可超额透支(用户ID,账号,密码,额度写入文件中)
    2.可以提现,手续费5%
    3.每月最后一天出账单(每月30天),写入文件(交易日,交易摘要,人民币金额,手续费)
    4.记录每月日常消费流水(交易日,账号,交易摘要,人民币金额,手续费)
    5.提供还款接口(还款总额,最低还款额(总欠款10%))
    优化(可选):
    1.每月10号为还款日,过期未还,按欠款额5%,计息

    10.pickle序列化
    语法:
    写入内容
    import pickle
    account_info ={
    '8906143632':['alex3714',15000,15000],
    '8908223631':['rachel',9000,9000],
    }

    f = file('account.pkl','wb')
    pickle.dump(account_info,f)
    f.close()

    加载内容
    import pickle
    pkl_file = open('account.pkl','rb')
    account_list = pickel.load(pkl_file)
    pkl_file.close()

    11.正则表达式
    import re
    #将正则表达式编译成Pattern对象
    pattern = re.comoile(r'hello')
    #匹配开始为hello的字符串
    #r表示原文本,如 不会做转移,只当作字符

    #使用Pattern匹配文本,获得匹配结果,无法匹配时将返回
    match = pattern.match('hello world!')

    if match:
    print match.group()
    ##输出hello
    或者
    m = re.match(r'hello','hello world!')
    print m.group()

    split用法
    import re
    p = re.compile(r'd+')
    print p.split('one1two2three3four4')
    #输出 ['one','two','three','four']

    findall用法
    搜索string,以列表形式返回全部能匹配的子串
    e = re.compile(r'd+')
    e.findall('one1two2three3four4')
    #输出['1', '2', '3', '4']

    sub函数用法
    以正则表达式为基础的替换工作
    re.sub('[abc]','o','Mark')
    #输出'Mork'

    12.模块的使用
    常用模块
    import sys,os

    sys.path会显示所有可以导入模块的目录
    如果想将自己的模块在任何文件中都可以导入,可以将模块放入到上述的目录之一中

  • 相关阅读:
    如何解决跨域问题?
    eclipse 显示堆内存状态
    MATLAB解一元线性回归问题
    Java深入理解深拷贝和浅拷贝区别
    Spring中使用DataSourceTransactionManager进行事务管理的xml配置
    jsp:forward
    Mybatis入门笔记链接
    python 判断字符串是否全为字母或数字
    java对象的浅克隆和深克隆
    安装使用ipython notebook
  • 原文地址:https://www.cnblogs.com/brucee/p/3934743.html
Copyright © 2011-2022 走看看