首页 > 代码库 > 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字符串、列表、元组