目录
1,如何安装python3.6
-解压安装包到/opt目录
-安装编译过程中需要的依赖包有:gcc,zlib,zlib-devel,openssl-devel
-进入安装包进行编译
cd /opt/Python3-*/
--prefix安装路径 --with-ssl:添加ssl加密
./configure --prefix=/usr/local/python --with-ssl
-安装:make && make install
添加python的命令到环境变量里
临时添加:
export PATH='python3命令所在的路径:$PATH'
永久添加
echo export PATH="python3命令所在的路径:PATH">>~/.bashrc
重新读取配置文件
source ~/.bashrc
-检测是否安装成功
python3
2,列表[ ]
(1)数组:存储同一种数据类型的集合scores=[12,13,14]
列表:(打了激素的数组):可以存储任意数据类型的集合
name=['tom','lily','bob','cooc']
type(name) out-->list
(2)列表性质:
一个变量可以存储多个信息
li=[1,1,3,True,'hello']
print li
print type(li)
列表里可以进行嵌套(列表也是一种数据类型)
li=[1,1,2,True,'helllo',[1,1,2,3,4,5]]
(3)应用
service=['http','ssh','ftp']
索引;切片,重复,连接,成员操作符,for循环遍历
索引:print service[0]
print service[1]
切片:print service[::-1]列表翻转
print service[1:]除第一个元素以外的其他元素
print service[:-1]出最后一个元素的其他元素
重复:
print service*3
连接:
service1=['mysql','firewalld']
print service+service1
成员操作符:
print 'firewalld' in service
print 'firewalld' not in service
for循环遍历:
for se in service:
print service
列表里嵌套列表
service2=[['http',[80],['ssh',22],['ftp',21]]
索引:
print service2[0][1]
print service2[-1][1]
切片:
print service2[:][1]
print service2[:-1][0]
eg:假如有下面这样的列表
输入:name=['fentiao','fendai','fensi','apple']
输出:‘I have fentiao,fendai,fensi and apple’
列表的增加:
service=['http','ssh','ftp']
print service+['firewalld']
追加一个元素到表中
service.append('firewalld')
print service
拉伸追加多个元素到表中
service.extend(['mysql,'firewalld'])
print service
在指定索引的位置插入元素
service.insert(1,'samba')
print service
列表的删除:
service=['http','ssh','ftp']
如果pop()不传递值的话,默认弹出最后一个元素
print service.pop()
pop也可以传递索引值
print service.pop(0)
remove可以删除指定元素
service.remove('ssh')
print service
del关键字从内存中删除列表
print service
del dervice
print service
通过索引,重新赋值
service[0]='mysql'
print service
通过切片,重新赋值
print service[:2]
service[:2]=['samba','ladp']
print service
列表的查看:
service=['http','ssh','ftp','ftp']
查看元素出现的次数
print service.count('ssh')
查看指定元素的索引值
print service.index('ssh')
按照Ascii码进行排序
service.sort()
print service
按Ascii码的大到小进行排序
service.sort(reverse=True)
print service
对字符串排序不区分大小写
service.sort(key=str.lower)
service.sort(key=str.upper)
print service
将原有的列表顺序打乱
import random
li=list(range(10))
random.shuffle(li)
print li
eg:做一个用户管理系统
1)判断用户是否存在
2)如果存在
密码对吗,先找出用户对应的索引
根据passwd[索引值]
如果正确,登陆出成功退出循环
如果密码不正确,重新登陆(机会只有三次)
2)不存在
重新登陆(机会只有三次)
eg:
后台管理人员只有一个用户:admin密码:admin
当管理员登陆成功以后,才可以管理用户信息
管理的用户信息包含
添加用户
删除用户
查看用户
退出
3,元组():
(1)(带了紧箍咒的列表)元组本身不可改变数类型,没有增删改差
元组内可以存储任意数据类型
t=(1,2,3,4,5,'start')
print type(t)
out--><type'tuple'>
元组里面包含可变数据类型可以间接修改元组的内容
t1=([1,2,3],4)
t1[0].append(4)
print t1
元组如果只有一个元素时,后面一定要加逗号,否则数据类型不确定
t2=('hello',)
t3=(1,)
print type(t2),type(t3)
(2)元组特性
索引;切片;重复;
westos=('hello','hi',[1,2,3,4])
切片: print westos[1]
print westos[-1]
print westos[1:]
print westos[2:]
print westos[:-1]
print westos[::-1]
重复:
print westos*3
连接:
print westos+('fentiao','fendai')
成语操作符:
print 'hello' in westos
print 'hello' not in westos
(3)变量交换数值
先把(a,b)封装成一个元组(1,2)
b,a=a,b
或者b=(1,2)[0] a=(1,2)[1]
print a,b
(4)打印变量值
name='westos'
age=10
t=(name,age)
print 'name:%s,age:%d'%(name,age)
print 'name:%s,age:%d'%t
(5)元组的赋值
t=('westos',10,100)
name,age,score=t
print name.age,score
(6)数据的排序
scorce=(100,89,45,89)
scorce=sorted(scores)
print scores
4,集合{ }:
类型set且集合里面的元素不可重复
如何定义空集合s=([])若直接定义为{},显示类型为字典
s={1,2,3,4,5}
print s,type(s)
集合多增加一个元素
s={6,7,8,9,1,2,3}
增加一个:s.add(10)
增加多个:s.update({4,5})
删除集合中的元素:
s.pop()
删除指定的元素:
s.remove(2)
集合只支持成员操作符,for循环
s={1,2,3}
print s[1]
print s+{4,5,6}
print s*3
print 1 in s
for i in s:
print i,
for i,v in enumerate(s):
print 'index: %s,value:%s' %(i,v)
集合的应用:
(1)li=[1,2,3,4,5]
print list(set(li))
(2)一些简单的取值可以借助基本指令来实现
min(2,4)
max(2,4)
sum(range(1,101))
sum(range(2,101,2))2到100偶数之和啦
sum(range(1,101,2))
枚举:返回索引值和对应的value的值
(1)for i,v in enumerate('hello'):
print i
print type(i)
print v
print type(v)
print str(i)+'---->'+v
print 'index:%s,value:%s'%(i,v)
(2)实现一一对应两字符串的内容,大有用途啊,比如
实现用户和密码的一一对应呢
s1='abc'
s2='123'
for i in zip(s1,s2):
print '--'.join(i)
out-->a--1
b--2
c--3
集合之间的关系:
s1={1,2,3}
s2={1,2,4}
并集:print '并集:',s1.union(s2)
print '并集:',s2&s2
差集:s1中s2没有的元素
print '差集:',s1.difference(s2)
print '差集:',s2-s1
对等差分:并集-交集
print '对等差分:',s1,symmetric_difference((s2))
print '对等差分:',s2^s2
s3={1,2}
s4={1,2,3}
s3是否为s4的子集
print s3.issubset(s4)
超集:s3中的每一个元素都在s4中,且s4中可能包含s3中没有的元素则s4是s3的超集
超集与真子集对应
两个集合是不是不相交:
print s3.iddisjoint(s4)
eg:明明要用计算机生成n个1~1000之间的随机整数(N<=1000),N是用户输入的
对于其中的重复数字,只保留一个,把其余相同的数字去掉
不同的数字对应着不同的学生的学号,把数字从小到大排序,按照排好的顺序去找同学作调查,请协助明明去重
5,字典:
字典是一个无序的数据集合,使用print输出字典的时候通常输出的顺序和定义的顺序是不一致的
message = {
'name':'tom',
'age':18,
'height':1.80,
'weight':75.5
}
print message
s = { }
print type(s)
定义空字典
d=dict()
print d,type(d)
字典的特性:
(1)d=dict(a=1,b=2)
print d
(2)成员操作符(默认判断key是否存在)
print 'a' in d
(3)setdefault即如果已经存在,那幺不做修改,
如果key值不存在添加key-value值
d.setdefault('a,10')
print d
d['g']=10
print d
d['a']=10
print d
get方法获取指定key对应的value值
如果key值存在,返回对应的value值
如果key值不存在,默认返回none,如果需要指定返回值,传值即可
print service.get('http','key not exist')
(4) 弹出指定的key-value值
d=dict(a=1,b=2,c=3)
d=pop('a')
print d
d.popitem()
print d
del d['a']
print d
(5)查看字典里所有的key值
service={
'http':80,
'mysql':3306}
print service.keys()
查看字典里所有的value值
print service.values()
查看字典里所有的key-value值
print service.items()
遍历
for k,v in service.item():
print k,'-->',v
eg:随机生成1000个整数,数字范围是[20,1000],升序输出所有不同的
数字及每个数字重复的次数
输入一个英文句子,打印出每个单词及其重复的次数