• python内容整理三


    Python学习:终于开始了啊

    Date: 2014.10.30

    Python 第八章

    1. if  expression :

       expr_true_suite

    由三部分组成,关键字+表达式+表达式为真或非零时的代码块,注意要有冒号,后面语句需要进行缩进。

    1. 单个if语句可以通过布尔操作符 and , or, not实现多重条件判断或者是否定判断。
    2. 在if中,0 以及none,””等都是false类型。
    3. 如果一个复合语句(例如 if 子句, while 或 for 循环)的代码仅仅包含一行代码,那么它可以和前面的语句写在一行上,但是推荐还是按照规范写,进行缩进。

    例子:都是合法的语句

    if  (4>2)or(2==1):print 222

    for i in range(10):print i

    while (4>2):print ("ok"*10)  “ok”*10,打印10次

    1. if expression:

    expr_true_suite

    else:

        expr_false_suite

    1. 好玩的例子,差点发疯:

    a = raw_input("input a number ")

    a = int(a)

    if a > 0:

        print a

        if (a <= 100):

            print "a>=0 and a<100"

        else:

            print a>100

    else:

    print "your put is <0"

    input输出的结果是一个字符串而不是一个数值,所以必须经过转换,否则就会出现字符串和数字比较的情况。

    1. if语句最多只能有一个else,但是可以有任意个elif进行使用,可以替代switch / case语句。

    例子:

    if user.cmd == “create”:

    action = “create  item”

    elif users.cmd == “insert”

        action = “insert  item”

    elif users.cmd == “delect”

        action = “delect  item”

    else:

        action =”try again!”

    1. 替代方法,使用 in 和 not in ;利用序列和成员关系操作符来简化:

    a = raw_input("input:")

    if a in ("create,insert,delect"):

        action = "%s item" % a

    else:

        action = "try again!"

    print action

    1. 字典的替代方法,字典是直接通过键进行查找,速度会快很多:更加优雅

    a = raw_input("input:")

    mydict = {"create":"create item",

              "insert":"insert item",

              "delect":"delect item"}

    default = "try again!"

    action = mydict.get(a,default)

    print action

    1. 三元操作符: X if C else Y
    2. while expression:

    suite_to_repeat

    这样的循环机制常常用在计数循环中,就是设置一个变量,在循环语句中+1,在while中进行判断。

    count = 0

    while count <9:

        print "index is :" , count

    count+=1

    1. while的无限循环会被用在服务器和客户端编程上面。
    2. 强大的循环机制for循环,可以遍历序列成员,用在列表解析和生成器表达式中。

    for iter_var in iterable:

    suite_to_repeat

    for循环会访问一个可迭代对象中的所有元素,并在所有条目处理结束后结束循环,这个用途很大,可以用在任何需要迭代的地方,尤其是数据库操作,还可以通过迭代器进行下标的获取或者是计数操作。

    1. for用于序列类型:

    字符串类型:

    for eachletter in "Names":

    print "current eachletter:",eachletter

    循环字符串中的每一个字母。字母是字符串的元素。这种用法不常见,但是可以作为调试使用,如果出来的是单个字符证明序列里面可能是一个字符串。

    1. 迭代序列的三种基本方法:

    (1)       通过序列项迭代:

    for each in ["niu","qi","ke"]:

     print "%s,hi" % each  注意:在格式化输出的后面没有逗号。

    (2)       通过序列的索引进行迭代:直接迭代序列会比通过索引迭代快

    for index in range(len(names)):

    print "hi,%s" % names[index]

    (3)       使用项和索引迭代:使用了enumerate()函数

    for index,name in enumerate(names):

       print "%d:%s,hi" % (index+1 , name) # 把后面的输入值放到一个元组中。

    16. 用于迭代器类型:

    range()内建函数有两种:range(start,end,step=1),开始值,终点值和步长,步长默认为1。这样会返回一个包含所有k的列表,其中k: start<=k and k<end ,并且以每次step的数值递增,step不能为0 ,注意的是不包括end值,这样在作为迭代器使用时显得更为合理,因为序列的下标一般是从0开始到length-1.

    另外就是range的简略语法:就是默认start为0,或者步长为0 而已。

    range(end),range(start,end)只有这几种形式。

    17. xrange()函数,在很大范围列表时,使用xrange()会更加合适。其实range()函数返回的是一个列表占用了内存,而xrange()生成的是一个xrange()的对象,不会返回列表。

    18. 与序列相关的内建函数:

    sorted(),排序

    zip()函数,for name,age in zip(names,ages) ,将两个序列连在一起。

    19. break语句是结束当前的循环。continue是会忽略下面的循环语句,并回到顶端,但是还是需要进行判断,只有验证成功后才会进行新一次的循环

    20. 使用迭代器,可以创造一个迭代器:

    myTuple = (123,”vde”,”eee”)

    I = iter(mytuple)

    next()

     

    for I in seq:

    do_something_to(i)

    actually:

    iter = iter(seq)

    while true:

        try:

            I = iter.next()

            except:StopIteration:

                break

    do_something_to(i)

    21. 字典的迭代:dict.iterkeys() , dict.itervalues(),dict.iteritems()

    22. for eachline in myfile 访问myfile中的每一行。当然要先open(“filename”).

    23. 在迭代可变对象的时候,是可以对可变序列进行修改的:但是除了列表之外其他大多都是不可变的,所以要谨慎使用。

    a = ["h123","h234","sss"]

    for i in a :

        if not i.startswith("h"):

            a.remove(i)

    print a

    24. 列表解析式;

    [expr for iter_var in iterable]

    iter_var不一定出现在表达式中。

    [x**2 for x in range(6)]

    扩展后: [expr for iter_var in iterable if cond_expr]

    25. 迭代矩阵:两个for很有用,列表解析很厉害

    [((x+1),(y+1)) for x in range(3) for y in range(5)]

    生成器表达式:(expr for iter_var in iterable if cond_expr)可以看到这个生成的也是一个迭代器对象。

     

    Data:2014.10.31

    python学习:第九章

    1. open()函数,特别注意的是这里的正斜杠,例子如下

    file_object = open(file_name,access_mode = ‘r’,buffering = -1)

    这里面的mode指的是打开的模式,r is only read ; w is write and a is 追加;U表示通用换行符支持。 其中,使用 r or U 打开的文件一定是存在的,使用’w’打开的文件若存在先清空,然后重新创建。‘a’模式是为追加数据存在的,即使你seek,文件也会被追加到末尾,如果文件不存在,将会自动创建。要写明文件的扩展名。另外还有“w+”,”r+”等形式。

    r+ 形式是在后面append; r 只能读; w 只能写,而且会覆盖前面的数据, a 只能追加。

    r+ 可读可写 , w+ 读的时候没有异常,但是不可以读出数据,写的时候会覆盖以前数据。a+读的时候没有异常,但是不可以读出数据,在后面追加。

     

    try:

        file = open("C:/unintall.log")

    except IOError:

        print "i do not find the file"

    for eachline in file:

        print eachline

    1. 工厂函数file()与open()功能相同,在读写使用open(),然后在说明处理文件对象的时候使用 file()比较合适。open()更像是一个方法,而file()更像是一个创建的函数,由于它们的返回对象相同,所以可以替换使用,但还是要加以区分。
    2. 文件方法可以分为4类: 输入,输出,文件内移动以及杂项操作。
    3. 输入:read()方法,直接读取字节到字符串中,最多读取给定数个字节,如果没有给定size字节数或为负数,则文件被读取到结尾。未来有可能被删除。
    4. readline(): 方法读取一个打开文件的一行(读取下个行结束符之前的所有的字节),然后整行,包括行结束符,作为字符串返回。和read()相同,一般默认size为 -1 ,如果制定字节,不足以返回完整的行时,则会返回部分行内容。
    5. readlines()方法,读取剩下的所有行数据,返回一个字符串列表,也可以设置大小sizehint的大小,表示最大返回的字节。还有一个xreadlines方法,和上面的xrange() 与 生成器表达式一样,都是不直接创建一个列表,从而减少对内存的使用。但是由于迭代器以及文件迭代的引入,可以使用iter(file)代替,没有必要进再使用xreadlines().
    6. writelines() 方法是针对列表的操作, 它接受一个字符串列表作为参

    数, 将它们写入文件. 行结束符并不会被自动加入, 所以如果需要的话, 你必须在调用writelines()前给每行结尾加上行结束符.

    1. 看个例子:

     try:

        file = open("C:/Users/niuqk/Desktop/test1.txt","r")

    except IOError:

        print "i do not find the file"

    # for eachline in file.readlines():

    #     print eachline

    data = [line.strip(" ") for line in file.readlines()]

    print data

    在这个例子中没有注释之前,是无法得到想要的效果的,因为file.readlines()一次性读完所有的数据,后面没有数据可读,得出的结果是空的。s

    1. os文件系统,以及os.path操作:
    2. data = [line for line in file] 打印出了换行符

    ['niuqike is ok!niuqike is ok!niuqike is ok! ', 'niuqike is ok! ', 'niuqike is ok! ', 'niuqike is ok!']

    data = [line.strip(“ ”) for line in file]

    data = [line for line in file.readline()]

    print data

    注意:这个是打印出来的一个个的字母,包含换行符

    data = [line for line in file.readlines()]

    print data

    如果想去掉换行符使用 strip(” ”)方法

    1. 11.   文件用完之后应该记得关闭,这个和数据库的是一样,其实所有的连接资源最好用完之后都进行释放,这个要注意,是一种良好的编程习惯。
    2. 12.   虽然当文件对象的引用数量变为0时,即当唯一的变量名重新给予赋值时,python的垃圾收集机制会自动关闭文件,但是良好的编程习惯仍应该是在重新给予赋值之前显式的给予关闭。
    3. 13.   file.truncate理解:这个其实是截取到 size的内容,留在文本中,也就是说size之后的文本会被删除。
    4. 14.   os学习: os.getcwd( )得到当前工作的目录,到包名层次。
    5. 15.   注意,转义符的使用,一切用到的地方都要考虑是否要进行转义,还有就是路径中出现C:Users iuqkDesktopkong  这里面的 正好是一个换行符,出现很多错误。C:Users iuqkDesktopkong
    6. 16.    python使用r进行不转义字符串

    myfile = open('C: ew ext.dat', 'w')

    这样的话会被误认为 为换行符、 为制表符、而被转义、

    因此可以加上个r、表示raw字符、不进行转义

    myfile = open(r'C: ew ext.dat', 'w')

     

  • 相关阅读:
    吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:显示在 <abbr> 元素中的文本以小号字体展示,且可以将小写字母转换为大写字母
    吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定单词首字母大写
    吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定大写文本
    吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定文本小写
    吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:段落中超出屏幕部分不换行
    吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定文本对齐,段落中超出屏幕部分文字自动换行
    吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定文本右对齐
    吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定文本居中对齐
    吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定文本左对齐
    吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定小文本
  • 原文地址:https://www.cnblogs.com/me-qk/p/4101632.html
Copyright © 2020-2023  润新知