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会显示所有可以导入模块的目录
    如果想将自己的模块在任何文件中都可以导入,可以将模块放入到上述的目录之一中

  • 相关阅读:
    【转】win8.1下安装ubuntu
    Codeforces 1025G Company Acquisitions (概率期望)
    Codeforces 997D Cycles in Product (点分治、DP计数)
    Codeforces 997E Good Subsegments (线段树)
    Codeforces 1188E Problem from Red Panda (计数)
    Codeforces 1284E New Year and Castle Building (计算几何)
    Codeforces 1322D Reality Show (DP)
    AtCoder AGC043C Giant Graph (图论、SG函数、FWT)
    Codeforces 1305F Kuroni and the Punishment (随机化)
    AtCoder AGC022E Median Replace (字符串、自动机、贪心、计数)
  • 原文地址:https://www.cnblogs.com/brucee/p/3934743.html
Copyright © 2011-2022 走看看