标签:python
http://www.noanylove.com/2014/10/centos-6-5-sheng-ji-python-he-an-zhuang-ipython/
rc = ["石头","剪刀","布"]
for i in rc: print(rc.index(i),i)
颜色: 31是红色,32 是绿色 \033[31;1m内容\033[0m \033[31;1m内容\033[0m
3十几是前景色,40十几是背景色 \033[31;44;1m内容\033[0m 多写就好啦
#!/usr/bin/env python # -*- coding: utf-8 -*- names = ["dailiang","guanjianyu","zhouxinyu"]
你可以通过索引/下标 来找到列表中每个元素的位置,记住索引是从0开始的 >>> names[0] #打印第一个下标 ‘dailiang‘
>>> names[1] #打印第二个下标 ‘guanjianyu‘ >>> names[-1] ‘zhouxinyu‘ #-1是最后一个变量
你可以从列表中取出多个指定元素,这种操作叫切片
>>> names[0:1] [‘dailiang‘] >>> names[0:2] [‘dailiang‘, ‘guanjianyu‘] >>> names[0:3] [‘dailiang‘, ‘guanjianyu‘, ‘zhouxinyu‘] >>> names[1:3] [‘guanjianyu‘, ‘zhouxinyu‘] >>> names[:-2] #代表取0至倒数第二个,但是倒数第二个不显示 [‘dailiang‘]
In [2]: names.append("linan")
In [3]: names
Out[3]: [‘dailiang‘, ‘guanjianyu‘, ‘zhouxinyu‘, ‘linan‘]In [4]: names.insert(1,"zhangfenglai1") In [5]: names Out[5]: [‘dailiang‘, ‘zhangfenglai1‘, ‘guanjianyu‘, ‘zhouxinyu‘, ‘linan‘]
备注:你想在哪个索引位置插,就写哪个数字
names [0] = ‘dailiang02‘
names = ["dailiang","guanjianyu","zhouxinyu"]
del names[0]
或者
names.remove("dailiang")
删除最后一个值
names.pop()names = ["dailiang","guanjianyu","zhouxinyu"] names02 = ["linshenwu","zhangfenglai","huqi"] names.extend(names02) [‘dailiang‘, ‘guanjianyu‘, ‘zhouxinyu‘, ‘linshenwu‘, ‘zhangfenglai‘, ‘huqi‘]
names = ["dailiang","guanjianyu","zhouxinyu"] lalal = names.copy() 这样lalal的内容就与names.copy一样了
>>> len(names) #通过len()内置函数可以查看列表中元素的个数 3
names.count("guanjianyu")
1备注:这个可不是用来统计下标的,是统计这个列表list有几个guanjianyu
names = ["dailiang","guanjianyu","zhouxinyu","linshenwu","linan"] names.sort() 排序后: [‘dailiang‘, ‘guanjianyu‘, ‘linan‘, ‘linshenwu‘, ‘zhouxinyu‘] 反转排序 names.reverse()
names.index("zhouxinyu")
0
例子:
In [9]: alist = ["l","la","lal"]
In [10]: for i in (alist) : print( alist.index(i),i)
0 l
1 la
2 lal元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
yuanzu = (‘dailiang‘, ‘zhouxinyu‘, ‘linshenwu‘)
元组只有两个方式,一个是count,一个是index,完毕
这写既然都学完了,那么我们写一个购物车程序:
要求: 1.用户输入薪资,就会列出产品列表 2.用户根据商品编号选择商品,选择商品加入到已买列表中,并监测余额 3.退出打印已买商品列表,打印出已买list和余额
缩进可能会有问题,不要照着抄,要自己写啊
#!/usr/bin/env python
# -*- coding: utf-8 -*-
product_list = [
("iphone",5800),
("mac Pro",9800),
("bike",800),
("watch",10600),
("coffee",31),
("python",81)
]
shopping_list = []
salary = input("please input your salary: ")
if salary.isdigit():
salary = int(salary)
while True:
for i in product_list :
print (product_list.index(i),i)
user_choice = input("which you want to buy :")
if user_choice.isdigit():
user_choice = int(user_choice)
if user_choice < len(product_list) and user_choice >= 0 :
p_i = product_list[user_choice]
if p_i[1] <= salary:
shopping_list.append(p_i)
salary -= p_i[1]
print("added %s to your shopping cart, your current balance is \033[31;1m%s\033[0m " %(p_i[0],salary))
# \033[32;1m内容\033[0m 32是绿色,31是红色
else:
print("你的钱只剩\033[31;1m %s \033[0m 了,不够啊,买毛线%s啊" %(salary,p_i[0]))
else:
print("商品信息%s不存在" %(user_choice))
elif user_choice == "q" :
print("-----------------\033[31;1m您的购买清单是\033[0m------------")
for p in shopping_list :
print(p)
print("\033[31;1m你的余额是\033[0m",salary)
exit()
else :
print("invaild options")
else :
print( "please insert into numbers")字典是一种"key-value"的数据类型,使用就像我们上课使用的字典,通过笔画、字母来查对应页的详细内容
#!/usr/bin/env python
# -*- coding: utf-8 -*-
info = {
"stu01" : "dailiang",
"stu02" : "guanjianyu",
"stu03" : "zhouxinyu",
"stu04" : "linan"
}
print(info)print(info["stu01"]) #这是根据key取出一个value
#print(info["dailiang"]) #但是不可以根据value取key
#print(info["stu05"]) #但是如果字典里面没有这个key,会报错的keyerror
print(info.get("stu05")) #推荐这个,如果没有不会报错,会返回None,一般推荐这样写
#判断一个key是不是在字典里
print("stu03" in info)
#返回值为Trueinfo["stu02"] = "武藤兰" #修改字典里的值,如果存在就会去修改,如果不存在就会去创建
info["stu05"] = "苍井空" # 如果不存在就会去创建
print(info)
#{‘stu04‘: ‘linan‘, ‘stu02‘: ‘武藤兰‘, ‘stu05‘: ‘苍井空‘, ‘stu01‘: ‘dailiang‘, ‘stu03‘: ‘zhouxinyu‘}#两种删除方法del与字典.pop
del info["stu01"]
print(info)
#{‘stu04‘: ‘linan‘, ‘stu05‘: ‘苍井空‘, ‘stu03‘: ‘zhouxinyu‘, ‘stu02‘: ‘武藤兰‘}
info.pop("stu02")
print(info)
#info.pop("zhouxinyu") #info.pop只能删除key值啊
#print(info)字典里的setdefault是说如果原来有这个key值,就把默认值返回,如果没有这个key值,那就创建一个新的key,并赋值
#info.setdefault()
info.setdefault("stu01","huqi")
print(info)
{‘stu04‘: ‘linan‘, ‘stu01‘: ‘dailiang‘, ‘stu03‘: ‘zhouxinyu‘, ‘stu02‘: ‘guanjianyu‘}
info.setdefault("stu05","huqi")
print(info)
{‘stu04‘: ‘linan‘, ‘stu01‘: ‘dailiang‘, ‘stu05‘: ‘huqi‘, ‘stu03‘: ‘zhouxinyu‘, ‘stu02‘: ‘guanjianyu‘}#!/usr/bin/env python
# -*- coding: utf-8 -*-
info = {
"stu01" : "dailiang",
"stu02" : "guanjianyu",
"stu03" : "zhouxinyu",
"stu04" : "linan"
}
a = {
"stu06" : "zhangfenglai",
"stu07" : "lalala"
}
info.update(a)
print(info)
{‘stu06‘: ‘zhangfenglai‘, ‘stu01‘: ‘dailiang‘, ‘stu07‘: ‘lalala‘, ‘stu04‘: ‘linan‘, ‘stu02‘: ‘guanjianyu‘, ‘stu03‘: ‘zhouxinyu‘}
备注:合并字典,如果有就创建,没有就删除#!/usr/bin/env python
# -*- coding: utf-8 -*-
av_catalog = {
"应用" : {
"linux" : ["zookeeper","kafka"],
"nginx" : ["rewrite","locate"],
"tomcat": ["JVM","OPTS"],
},
"硬件" : {
"存储·" : ["硬盘","raid"],
"管理" : ["远程管理","ilo"],
"冗余": ["绑定","bond"],
},
"数据库" :{
"mysql":["备份","mysqldump"],
"sqlserver":["管理","SQL客户端"],
},
}是不是乱了???是不是不知道自己写的是什么??
记住下面几个小区别
元组:() 列表:[] 字典{}
如果我要修改冗余项,想修改bond为 etrunk
av_catalog["硬件"]["冗余"][1] = "etrunk"
字典查找key值就是用[],就是["硬件"],["冗余"]
列表查找用下标了,就是[1]
print(av_catalog)
把字典转换成列表
print(info.items())
dict_items([(‘stu01‘, ‘dailiang‘), (‘stu03‘, ‘zhouxinyu‘), (‘stu07‘, ‘lalala‘), (‘stu04‘, ‘linan‘), (‘stu02‘, ‘guanjianyu‘), (‘stu06‘, ‘zhangfenglai‘)])
字典的循环其实与列表的循环是一样的
列表的循环:
for i in product_list : print (product_list.index(i),i)
字典的循环:
for i in info : print (i,info[i])
data = {
‘北京‘:{
"昌平":{
"沙河":["oldboy","test"],
"天通苑":["链家地产","我爱我家"]
},
"朝阳":{
"望京":["奔驰","陌陌"],
"国贸":{"CICC","HP"},
"东直门":{"Advent","飞信"},
},
"海淀":{},
},
‘山东‘:{
"德州":{},
"青岛":{},
"济南":{}
},
‘广东‘:{
"东莞":{},
"常熟":{},
"佛山":{},
},
}open及file内建函数 作为打开文件之门的"钥匙",内建函数open()以及file()提供了初始化 输入/输出(I/O)操作的通用接口
成功打开文件后时候会返回一个文件对象,否则引发一个错误
r 以只读方式打开(文件不存在则报错) w 以写方式打开 (文件存在则&清空,文件不存在则创建) a 以追加模式打开(必要时创建新文件) r+ 以读写模式打开(参加r+) w+ 以读写模式打开(参见w) a+ 已读写模式打开(参见a)
b :windows下需要加一个b,比如rb wb等
1.先open一个文件
f = open("/etc/hosts") #如果open后面不加东西的话,默认是以 f = open.("/etc/hosys","r")模式打开
2.读文件数据
data = f.read()
print(data)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
3.关闭文件
f.close() #关闭文件为什么要关闭呢?? 因为读文件需要指针,读完一行,指针就会放到第二行,下次你再次读取就会从第二行开始读,这样就读不全,所以我们重复读 一个文件就需要把先把文件 f.close()
read()方法用来直接读取字节到字符串中
读取一行
[root@192 ~]# vim /etc/passwd 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 8 halt:x:7:0:halt:/sbin:/sbin/halt 9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 10 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin 11 operator:x:11:0:operator:/root:/sbin/nologin 12 games:x:12:100:games:/usr/games:/sbin/nologin
上图是这个文件:
f= open("/etc/passwd")
f.read(10) #只读10个字节
‘root:x:0:0‘
f.readline() #一行一行的读,每次读一行
‘:root:/root:/bin/bash\n‘
f.readlines() #把指针后面所有的读出来,以列表的形式例子:
f= open("/etc/hosts")
f.readlines()
[‘127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4\n‘,
‘::1 localhost localhost.localdomain localhost6 localhost6.localdomain6\n‘]
可以看到是以列表的形式读出来的啊如果需要逐行处理文件,可以结合for循环迭代文件
f = open("/etc/hosts")
for i in f : print (i)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6write()内建方法功能与read()和readline()功能相反,它把含有文本数据或者二进制数据块的字符串写入到文件爱你中去 写入文件时,不会自动添加行结束符或者换行符,需要程序员自己手动添加
下面我们来做一个写操作的例子
linux操作系统进入到/opt 打开python 执行
f = open("a.txt")
---------------------------------------------------------------------------
FileNotFoundError: [Errno 2] No such file or directory: ‘a.txt‘发现报错,因为** open("文件") = open("文件","r") **,r是文件不存在则无法创建
所以我们要换一种方式来
f = open("a.txt","w") 这样进入/opt 目录发现创建了a.txt这个文件
执行
f.write("111\n222\n")
f.flush() #这样就会写入磁盘啦,你就可以在文件中看到啦
111
222
writelines参数需要你使用列表的形式才行,上面readlines也是以列表形式输出
f.writelines(["2222\n","33333\n"])
f.read()
---------------------------------------------------------------------------
UnsupportedOperation: not readable
发现报错,因为创建时w 权限,只可以写不可以读ok,那么现在问题来了
如果我以f = open ("文件","r") 的方式打开文件不能写入
如果我以f = open("文件","w")的方式打开文件则会清空原文件
如果我想要在文件后面追加呢???
a 以追加模式打开(必要时创建新文件)
a+ 已读写模式打开(参见a)
这里不做详细介绍了,直接上例子
模拟cp操作: 1.创建~/bin/cp.py 文件
2.将/bin/ls "拷贝到"/root/ 目录下
3.要求读取/bin/ls 后,每次读取4096字节,依次写入到新文件
4.不要修改原始文件
import sys import os f = open("cp.py","a") b = open("/etc/hosts","r") while True: c = b.read(4096) if c: f.write(c) f.flush() else: break
f.close() b.close()
标签:python
原文地址:http://dailiang.blog.51cto.com/9484865/1834520