day03笔记

1、list操作
stus = ['xiaohei','xiaobai','xiaohuang','cxdser'] #数组、list、array
#增加
stus.append('原宝')#在list末尾增加一个元素
stus.insert(3,'马冬')#在指定位置添加元素
stus.insert(1000,'田里')#如果你指定的下标不存在,那么就是在末尾
print(stus)
#改
stus[0]='原宝'
print(stus)

#查看
print(stus)
print(stus[-1])
print(stus.count('hhaha')) #查看某个元素在这个里面的个数,如果该元素不存在,那么返回0
print(stus.index('sdfsdfs')) #
找到这个元素的下标,如果有多个,返回第一个,如果找一个不存在的元素,会报错
stus = ['xiaohei','xiaobai','xiaohuang','cxdser','xiaohei']
#删元素
stus.pop()#默认删除最后一个元素,如果指定下标,那么删除指定的元素
stus.remove('xiaohei')#删除list里面的一个元素
del stus[0]
stus.clear()#清空整个list
print(stus)
stus.reverse()#反转list
nums = [9,31,345,12,457,2352,12143,2321]
nums.sort(reverse=True)
排序,默认排序是升序,如果指定了reverse=True就是按照降序拍
print(nums)

#多维数组 二维数组
三维数组
all_nums = [ 123,  456,   [789,10,11]    ]
three = [ 123, 456, [789,10,11, ['hahaha','1234'] ]]
a = [1,2,3]
b = [4,5,6]
a.extend(b)#合并两个list
print(a)
print(b)
# print(all_nums[2][1])

2、list循环和切片
for name in names:  print(name)
#如果直接for循环一个list的时候,
#那么每次循环的值都是这个list里面的元素
names = ['haha','hehe','heihei']
#切片
nums = [1,2,3,4,5,6,7,8,9,10]
print(nums[-1:-8:-1])#步长
#步长是正数的话从左往右取
#步长是负数的话从右往左取
print('没有:1',nums[:6])

#切片同样适用于字符串,字符串也有下标
title='今 天 发 苹 果 '
print(title[:4])
for i,t in enumerate(nums): #enumerate可以同时循环下标和值
print(i,t)

#就是list取值的一种方式
print(nums[2:4])
print(nums[:6])#如果切片前面一个值不写的话,从开头取
print(nums[3:])##如果切片后面的值不写的话,取到末尾
print(nums[:])#如果前面的值和后面的值都不写的话,那么全取过来

#切片是顾头不顾尾
#注册,死循环
# username,paswd
nams = ['haha']
if 'haha' in nams:
print('hhaha')

usernames = [] #所有的用户名
while True:
username= input('用户名:')
passwd = input('密码:')
if usernames.count(username) == 0: #判断找到的个数是否为0,为0的话,代表这个用户没有被注册过
print('注册成功!')
usernames.append(username)
else:
print('用户已经被注册')


3、 非空即真 非0即真
 if a==b:
print('xxx')
#3次
#不能为空
# 什么也不输入
for i in range(3):
username = input('username:').strip()
passwd = input('passwd:').strip()
if username and passwd:
if username=='nhy' and passwd=='123456':
print('%s欢迎登录'%username)
break
else:
print('账号/密码错误!')
else:
print('账号/密码不能为空')
else:
print('错误失败次数太多!')

4、字典操作# stus = [ ['原宝',30,'nan','xxx','20k','x'], ['原宝',30,'nan','xxx','20k','x','xx','xx'],
 ['原宝',30,'nan','xxx','20k','x'],
['原宝',30,'nan','xxx','20k','x'],
]

# k=v
#取值方便、速度快
#查
d = { 'name':'原宝',
'age':18,
'sex':'男',
'addr':'昌平区',
'money':10000000 ,
'xx':'xxx'
}

print(d['haha'])#如果写了不存在的key,会报错
print(d.get('SDFSDF'))#如果get不到的话,返回None
#增加
d['shengao']=198
d.setdefault('weight',130)
#字典是无序的

#修改字典的
d['shengao']=200 #如果这个key存在的话,修改他的值,如果key不存在的话,新增一个

#删除
d.pop('shengao')#删除某个key
d.popitem()#随机删除一个
del d['shengao']
d.clear()#清空字典
print(d.keys())#获取到字典所有的key
print(d.values())#获取到所有的values
d.has_key('addr') #python2里面字典有这个方法,有没有这个key
if 'addr' in d :#判断key是否在这个字典里头
print('addr')
print(d.items())#是吧字典的k和v转成一个二维数组
for k,v in d.items():#
print(k,v)
int()#int类型
str()#抓成字符
list()#转成list

res = list(d.items())
print(res[0])

for k in d: #性能好
print(k,d.get(k))
5、字典嵌套
stus = {
'ybq': {
'age': 18,
'sex': '男',
'addr': '昌平区',
'money': 10000000,
'jinku': {
'建行卡': 80000,
'工商卡': 800000,
'招商卡': 8000000
}
},
'tlx': {
'age': 19,
'sex': '女',
'addr': '昌平区',
'money': 10000000,
'huazhuangpin': ['chanle','haha']
},
'mpp': {
'age': 19,
'sex': '女',
'addr': '昌平区',
'money': 10000000,
"bag": {
'lv': '一车',
'鳄鱼':10
}
},
}

all_money = stus['ybq']['jinku'].values()
print(all_money)
print(sum(all_money))
sum_money = 0
for money in all_money:
sum_money= sum_money+money
print(sum_money)
6、元组
# mysql1 = ('127.0.0.1',3306,'my','root','123456')
# mysql2 = ('127.0.0.1',3307,'my','root','123456')
# print(mysql1.count('my'))#找个数
# print(mysql1.index('my'))#返回下标
#元组也是list,只不过是不可变的    
7、字符串方法
#可变变量  list、字典
#不可变变量 元组、字符串
#
li = [1,1,2,3,4,5,6,7,8,9]
li2 = li[:] #深拷贝
li2 = li #浅拷贝
print('这里li的内存地址',id(li))
print('这里是li2的内存地址',id(li2))
#
for i in li2:
if i%2!=0:
li.remove(i)
print(li)

#在循环list的时候不能删东西
#字符串这些方法都不会改变原来字符串的值
name = 'besttest'
new_name = name.strip() #默认是去掉两边的空格和换行符
new_name= name.lstrip() #默认是去掉左边的空格和换行符
new_name= name.rstrip()#默认是去掉右边边的空格和换行符
new_name = name.count('t')#查找某个字符串在字符串里面出现的次数
index = name.find('d')#找到这个字符串,返回它的下标,如果不存在的话,返回-1
index = name.index('d')#找到这个字符串,返回它的下标,如果不存在的话,报错
print(name.upper())#把所有字母都变成大写的
print(name.lower())#把所有字母都变成小写的
file_name = 'a.xls'
print(file_name.endswith('.xls'))#判断一个字符串是否以xx结尾
sql = 'select * from user; select'
sql.startswith('select')#判断一个字符串是否以xx开头
f = '{name} 欢迎光临 age :{age} '
print(f.format(name='原宝青'))#字符串格式化
d = {'name':'yuanbaoqiang','age':18}
print(f.format_map(d))#字符串格式化,它传进去的是一个字典
new_sql = sql.replace('select','update')#字符串替换,第一个old,new
print(new_sql)

print('122s'.isdigit())#是否是数字
print('&'.isalnum()) # 是否包含数字或字母
st = 'a b c d f g'
st_list = st.split()#如果什么都不写的话,是按照空格分割
print(st_list)

slit = ['a', 'b', 'c', 'd', 'f', 'g']
s2='hhhhhhhhhh'
tu = (1,2,3,4,5)
d={'name':'nnn','age':18,'sex':1}
res = '*'.join(d)
print(res)

if 'name' not in d:
pass

#可以遗忘的
new_name = name.capitalize()#首字母大写
name.center(50,'*') #把字符串放中间,两边用*补齐
print('aaAA'.islower()) # 是否是小写字母
print('AAaa'.isupper()) # 是否是大写字母
print('sdfsdf'.isalpha()) # 是否是英文字母
8、注册登录
#1、账号/密码/密码确认
#2、非空
#3、已经存在的不能注册
all_user = {'niuhanyang':'123456','tlx':'123456'}
while True:
username = input('username:').strip()
pwd = input('pwd:').strip()
cpwd = input('cpwd:').strip()
if username and pwd and cpwd:
if username in all_user:
print('用户名已经存在,请重新输入')
else:
if pwd==cpwd:
all_user[username]=pwd
print('注册成功!')
break
else:
print('两次输入的密码不一致')
else:
print('账号/密码/确认密码不能为空')

#登录程序
# 1、非空
# 2、如果输入的用户名不存在,要提示
#3、输入账号密码
while True:
username = input('username:').strip()
pwd = input('pwd:').strip()
if username and pwd:
if username in all_user:
src_pwd = all_user[username]
if src_pwd == pwd:
print('欢迎登录')
break
else:
print('密码输入错误!')
else:
print('输入的用户不存在')
else:
print('账号/密码不能为空')
9、文件读写
f = open('ybq.txt','a+',encoding='utf-8')
f.seek(0)#seek移动指针的时候,只对读好使,对写不好使
f.truncate()#清空文件内容
print(f.read())#读取文件里面的全部内容
print(f.tell())#查看当前文件指针的位置
print(f.readline())#只读取一行的内容
print(f.readlines())#读取文件里面所有的内容,把文件里面每一行的内容放到一个list里面
f.write('yzf'+'\n')
print(f.read())
names = ['bq','yzf','lx','ly','jy']
st = 'ybq,mpp,tlx'
tu=('sdf','sdfs','sdfsd')
d={'name1':'xx1'}
f.write(names)
f.writelines(d['name1']) #写的时候,传入一个可迭代的对象
f.close()
# #文件指针
#file() #python2里面
#open()

#文件打开有3种方式
# 读 r #如果打开的文件的时候没有指定模式,那么默认是读
# 读写模式 r+,只要沾上r,文件不存在的时候,打开都会报错
# 写 w #w模式会清空原有文件内容
# 写读模式 w+
#只要沾上w,他就会把文件内容清空
追加 a
追加读写
f = open('a.txt', 'w')

for i in range(3):
f.write(xx+'\n')
10、高效处理文件的方法
fw  = open('ybq.txt',encoding='utf-8')
# count = 1
#直接循环文件对象的话,就是循环文件里面的每一行

for f in fw:
f = f.strip()
stu_lst = f.split(',')
print(stu_lst)
print(stu_lst[0])



 
posted @ 2018-01-05 10:02  zfzhp  阅读(130)  评论(0编辑  收藏  举报