python 第二天
一.数据类型
1.数字 int
2.整型
3.浮点型 float
a += 1 和 a = a+1 方法相同
布尔值:真和假,1 和 0 ,1是真,0是假
二.字符串
填充、删减、变形、切分、连接、判定、查找、替换、编码
type('a')
str(1) #转换成字符串
int('1') #转成数字
\n #自动换行
1.填充
name = 'WMH'
name.center(10,'*')
expandtabs() #expandtabs()的tabsize 参数默认为8填充空格,但必须有\t制表符
print('a\tb'.expandtabs())
print('a\tb'.expandtabs(4)) # \t 为制表符
print('KKKKKKK123dddd'.lower()) #转小写
print('jfksjfsa'.upper()) #字符串转大写
print('jfksjfsa'.capitalize()) #首字母大写
print('a'.join('bcd')) #返回字符串,插入字符,隔一个插一个
2.删减
strip() #去两边,脱衣服
print(' a '.strip())
3.字符串判断 ==> 索引(下值,位置参数,传参)
#索引:
'hello python'
'hello python'[0]
'hello python'[1]
'hello python'[0:2] #0到2的索引,返回he,有下限,没有上限
'hello python'[2:] #从2到最后
'hello python'[-1] #只取最后
'hello python'[0:-1]
'hello python'[:] #从0到最后
'hello python'[::2]
'0123456789'[::2] #格2取1
'0123456789'[::3] #格3取1
len('hello python') #返回字符串长度
4.判断:
isalnum() #判断是否为字母或数字组成,返回True或False
name = '123acb'
name.isalnum()
'123abc'.isalnum()
isalpha() #判断是否为字母组成,返回True或False
isdigit()#判断字符串是否为数字组成,返回True或False
islower() #判断是否为小写字母
isspace() #判断是否为空格
startswith() #以什么开始
'ssdfsfds'.startswith('s',3,5)
endswith() #以什么结束
'ssdfsfds'.endswith('f')
判断是否为数字,不是即返回错误数据类型
age =input("your age : ")
if age.isdigit():
age = int(age)
else:
print("invalid data type")
your age : sdfsa
invalid data type
5.字符串查找
count()
'dsfsdfasfd'.count('f') #统计f的个数
'dsfsdfasfd'.count('a',0,5) #查找a,从0到5,不包括5
find()
'dsfsdfasfd'.find('a')
'dsfsdfasfd'.find('f') #查找完返回索引值
'dsfsdfasfd'.find('f',4) #查找完返回索引值
'dsfsdfasfd'.find('k') #找不找返-1
index()
'dsfsdfasfd'.index('k') #找不找返错
6.字符串替换
replace()
'hello python'.replace('h','H') #h替换H
'hello python'.replace('h','H',1)#1是指最大替换个数
7.字符串编码chr ord #ascii码,对信息加密方式
chr(a)
ord(97)
encode() #加码
decode() #解码
a = u'aaaa'
a.encode('gbk')
print a
a.decode('utf-8')
print a.decode('utf-8')
a = '中国'
a.encode('utf-8')
a.decode('gbk')
print a.decode('gbk')
print a.decode('gbk').encode('utf-8')
8.字符串拼接
'a'+'b'
'a'*3 #打印三次
#不要type()判断是否为数字
print("wmh"+ "wml")
二.列表
1.索引
根据索引号打印值
name = ["minghu","minglong","jack",22,9,['dfsj','fksjd'],23]
print(name[-1]) #根扰索引号打印对应的字符,打印最后一个索引的值
print(name[-2]) #打印最后第二个索引的值
print(name[0:1]) #打印索引0到1,不包括1
print(name[2:5]) #打印索引2到5的值,不包括最后的索引
print(name[-5:]) #取最后5个值
print(name[-5:-1]) #不取最后一个
print(name[:]) #取全部
print(name[:6]) #取索引开头到索引6,不包括6
2.二次取
print(name[5][0]) #取列表中列表索引
print(name[:6][2:4][0])
3.修改:
name[1] = "wangminghu"
print(name)
4.插入
name.insert(2,'minggo')
print(name)
5.追加
name.append("alex")
6.删除
name.remove("minggo")
7.查找:
print(9 in name) #判断9是否在列表中,有则返回True,无则返回False
name=['9','9','8']
print(name.count("9")) #统计有几个9
name=['9','9','8']
if "9" in name:
num_of_ele = name.count("9") #统计有几个9
print("[%s] 9 is/are in name" % num_of_ele)
name=[9,9,8]
if 9 in name:
num_of_ele = name.count(9) #统计有几个9
print("[%s] 9 is/are in name" % num_of_ele)
8. 更改第一个索引的值
name=[9,9,8]
if 9 in name:
num_of_ele = name.count(9) #统计有几个9
posistion_of_ele = name.index(9)
name[posistion_of_ele] = 999 #只修改第一个索引的值
print(name)
9.全部更改
for i in range(name.count(9)):
ele_index = name.index(9)
name[ele_index] = 99999999999999999
10.合并表
name=[9,9,8]
name2 = ['fsaf','fdsafa']
name.extend(name2) #把name2的表合并到name表
11.反转
name.reverse
print(name)
12.排序
name.sort
print(name)
14.删除索引元素
pop #弹出,返回后删除索引元素
a.pop()
a.pop(3)
15.去两边,拖衣服,例input输入有空格,即不执行内容,可以使用strip()脱掉,即你随意多少空格都去掉
有空格交互1:
username = input("user:")
if username == 'alex':
print("welcome")
user:alex #此处有空格
Process finished with exit code 0 #输入正确信息,后面有空格,即判断不正确,即退出
使用strip后的空格交互:
if username.strip() == 'alex':
print("welcome")
user :alex #此处有多个空格
welcome #输入了正确信息,脱掉了所有空格,输出了想要的结果
16.切分:split使用
names="alex,jack,rain"
name2=names.split(",") #变成列表
print(name2)
print("|".join(name2)) #合成字符串
print(name2)
['alex', 'jack', 'rain']
alex|jack|rain
['alex', 'jack', 'rain']
17.判断是否有空格
name = "alex li"
print(' ' in name)
True
18.不完全COPY
name3 =name.copy()
name[0]='ALEX'
name[3][1] = 4444444444444
import copy
name=['fdsafsa','fkjdsaflsaf','jfkdsajflsa','fdsafsa']
name4=copy.copy(name)
print(name4)
19.完全克隆
import copy
deepcopy
name = ['sa','fdsa','fdsaf','fsa',['fsa','fsa','dfa'],'fdsfa','dfaf']
copy4.deepcopy(name)
20.格式化字符串
字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用或者用多次
a=('{0},{1}'.format('kzc',18))
print(a)
'kzc,18'
'{},{}'.format('kzc',18)
'kzc,18'
'{1},{0},{1}'.format('kzc',18)
'18,kzc,18'
msg="hello,{name},long {age} "
msg2=msg.format(name='fdsf',age=33)
print(msg2)
hello,fdsf,long 33
三.课堂作业1
1.需求:
列表包括所有成员名字
往中间插入两个临组成员的名字
取出第3-8的人
删除第7个人
把临组2个人一次性删除
把组长的名字加备注
要求隔一个人打印一个人
2.实现
name = ['wmh','wml','rain','tom','xiaoming','xx','mm','jsjf']
name.insert(-1,"minghu") #放到负一的左边
name.insert(4,"minglong")
print(name)
name2 = name[2:7]
print(name2)
name.remove('mm')
del name[4:6] #同时删除两个人
del name #整个变量删除
name[2]="wml(zuzhang)"
print(name[0:-1:2]) #2为步长,但不打印最后一个,隔一个打一个
print(name[0::2]) print(name[::2]) #隔一个打一个
四.while loop 死循环
#死循环限制100,跳过50到60继续执行,到100即退出
count =0
while True:
count += 1
if count > 50 and count < 60:
continue
print("NIU",count)
if count == 100:
print("fdsjakfjsajfsa")
break
五.字典
wmh_dict = {
1:{'name':"linzhiling","age"
:22,'addr':'taiwan'},
2:{'name':"linxinru",'age':21,
'addr':'taiwan'},
3:{'name':"gaoyuanyuan",'age':'20',
'addr':'dalu'}
}
print(wmh_dict)
print(wmh_dict[1]) #打印key名字为1的值
wmh_dict[2]['name']= "xuxiyuan" #更改key名字为2嵌套字典key名为name的值
print(wmh_dict[2])
wmh_dict[2]['fanbingbing'] = 2 #没有即加
wmh_dict[2].pop("addr") #删除addr KEY
v=wmh_dict.get(1) #获取字典内所有键对应的值,同a['keyname']相同
print(v)
判断key是否在字典中,有则回显,这种方法效率高
for key in wmh_dict:
print(key,wmh_dict[key])
更新即替换
a = {'name':'zhangsan','age':20,'abort':{'father':'laozhang','mother':'zhangsan'}}
a.update(name = 'wmh') #和a['name'] = 'wmh' 效果相同
{'name': 'wmh', 'abort': {'father': 'laozhang', 'mother': 'zhangsan'}, 'age': 20}
dict.update() #更新字典键对应的值
a.update(name = 'wmh') #和a['name'] = 'wmh' 效果相同
a