首页 > 代码库 > python 学习笔记day04-python字符串、列表、元组

python 学习笔记day04-python字符串、列表、元组

字符串

    序列

        序列类型操作符

序列操作符
作用
seq[ind]
获得下标为ind的元素
seq[ind1:ind2]
获得下标从ind1到ind2间的元素结合
seq * expr
序列重复expr次
seq1 + seq2
连接序列seq1和seq2
obj in seq
判断obj元素是否包含在seq中
obj not in seq
判断obj元素是否不包含在seq中

        内建函数

函数
含义
list(iter)
把可迭代对象转换为列表
str(obj)
把obj对象转换成字符串
tuple(iter)
把一个可迭代对象转换成一个元组对象

             >>> list(‘hello‘)
                [‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘]
                >>> list([‘hello‘,‘world‘])
                [‘hello‘, ‘world‘]
                >>> str([‘hello,‘,‘world‘])
                "[‘hello,‘, ‘world‘]"

        len(seq):返回seq的长度

        max(iter,key=None):返回iter中的最大值

            >>> max(‘abf‘)
            ‘f‘
            >>> ord(‘a‘)
            97
            >>> ord(‘f‘)
            102
            >>> max([10,234,3421,12])
            3421

        enumerate:接受一个可迭代对象作为参数,返回一个enumerate对象

                >>> for i,j in enumerate(aList):
                ...   print "index %d:%s" %(i,j)
                ...
                index 0:hello
                index 1:world

        reversed(seq):接受一个序列作为参数,返回一个以逆序访问的迭代器

        sorted(iter):接受一个可迭代对象作为参数,返回一个有序的列表

            >>> aList = [32,43,323,55]
            >>> sorted(aList)
            [32, 43, 55, 323]
            >>> for item in reversed(aList):
            ...  print item
            ...
            55
            323
            43
            32

    字符串

        字符串操作符

            比较操作符:字符串大小按ASCII码值大小进行比较

            切片操作符:[]、[:]、[::]

            成员关系操作符:in、not in

                >>> pyStr = ‘Hello World!‘
                >>> pyStr[::2]
                ‘HloWrd‘
                >>> pyStr[::-1]
                ‘!dlroW olleH‘

小练习:

    检查标识符

    1、程序接受用户输入

    3、判断用户输入的标识符是否合法

        #!/usr/bin/env python

        import string

        first_chs = string.letters + ‘_‘
        other_chs = first_chs + string.digits
        def check_id(myid):
            if myid[0] not in first_chs:
                print "1st char invalid."
                return
            for ind,ch in enumerate(myid[1:]):
                if ch not in other_chs:
                    print "char in position: %s invalid" %(ind + 2)
                    break
            else:
                print "%s is valid" % myid
        if __name__ == ‘__main__‘:
            myid = raw_input("id to check: ")
                if myid:
                    check_id(myid)
                else:
                    print "You must input an identifier."

        格式化操作符

            字符串可以使用格式化符号来表示特定含义

格式化字符
转换方式
%c
转换成字符
%s
优先用str()函数进行字符串转换
%d/%i
转成有符号十进制数
%o

转成无符号八进制数

%e/%E
转成科学计数法
%f/%F
转成浮点数

        >>> "%o" % 10
        ‘12‘
        >>> "%#o" % 10
        ‘012‘
        >>> "%#x" % 10
        ‘0xa‘
        >>> "%e" % 1000000
        ‘1.000000e+06‘

        >>> "%f" % 3.1415
        ‘3.141500‘
        >>> "%4.2f" % 3.1415
        ‘3.14‘

格式化操作符辅助指令
作用
*

定义宽度或小数点精度

(>>> "%*s%*s" % (-8,‘name‘,-5,‘age‘)

‘name    age  ‘

-
左对齐
+
在正数前面显示加号
<sp>
在正数前面显示空格
#

在八进制数前面显示0,在十六进制数前面显示‘0

x’或者‘0X ’

0
显示的数字前面填充0而不是默认的空格

        >>> "my ip is: %s" % ‘192.168.1.1‘
        ‘my ip is: 192.168.1.1‘
        >>> "my ip is: {}".format(‘192.168.1.1‘)
        ‘my ip is: 192.168.1.1‘
        >>> "my ip is:{},you ip is: {}".format(‘192.1268.1.1‘,‘172.40.1.1‘)
        ‘my ip is:192.1268.1.1,you ip is: 172.40.1.1‘
        >>> "my ip is:{1},you ip is: {0}".format(‘192.1268.1.1‘,‘172.40.1.1‘)
        ‘my ip is:172.40.1.1,you ip is: 192.1268.1.1‘
小练习

1、提示用户输入(多行)数据

2、假定屏幕宽度为50,用户输入的多行数据显示(文本内容居中):

+********************************+

+                hello world                              +

+                great work!                              +

+********************************+
#!/usr/bin/env python

def get_contents():
    contents = []
    while True:
        data = http://www.mamicode.com/raw_input("(Enter to quit)> ")
        if not data:
            break
        contents.append(data)
    return contents

if __name__ == ‘__main__‘:
    width = 48
    lines = get_contents()
    print‘+%s+‘ %(‘*‘ * width)
    for line in lines:
        sp_wid,extra = divmod((width - len(line)),2)
        print "+%s%s%s+" %(‘ ‘ * sp_wid,line,‘ ‘ * (sp_wid + extra))
    print‘+%s+‘ % (‘*‘ * width)

        字符串模板

            string 模板提供了一个Template对象,利用该对象可以实现字符串模板的功能

                >>> import tab
                >>> import string
                >>> origTxt = "Hi ${name}, I will see you ${day}"
                >>> t = string.Template(origTxt)
                >>> t.substitute(name = ‘bob‘,day = ‘tomorrow‘)
                ‘Hi bob, I will see you tomorrow‘
                >>> t.substitute(name = ‘tom‘,day = ‘the day after tommorrow‘)
                ‘Hi tom, I will see you the day after tommorrow‘

小练习

创建用户

    1、编写一个程序,实现创建用户的功能

    2、提示用户输入用户名

    3、随机生成8位密码

    4、创建用户并设置密码

    5、发邮件通知用户相关信息

#!/usr/bin/env python

import sys
import os
import randpass2
import string

contents  = ‘‘‘username:  ${username}
password: ${password}
‘‘‘

t = string.Template(contents)

def adduser(user,  passwd,  email):
    os.system("useradd %s" %user)
    os.system("echo %s:%s | chpasswd" %(passwd,user))
    #os.system("echo %s | passwd --stdin %s" %(passwd,user))
    data = http://www.mamicode.com/t.substitute(username=user,password = passwd)
    os.system("echo -e ‘%s‘ | mail -s ‘user info‘ %s" %(data,email))
if __name__ == ‘__main__‘:
    username = sys.argv[1]
    pwd = randpass2.gen_pass()
    adduser(username,pwd,"root@localhost")

        原始字符串操作符

        内建函数

本文出自 “linux服务器” 博客,请务必保留此出处http://sailq21.blog.51cto.com/6111337/1858689

python 学习笔记day04-python字符串、列表、元组