Melody_69

导航

day3

 #字符串

字符串定义好了不能修改


print (name.capitalize()) #将首字母大写
print (name.center(10,'*')) #将原字符串居中,'10'为填充的长度,'*'为填充字符
print (name.index('e')) #取元素的下标
print (name.isalnum()) #只能英文/数字,判断真假
print (name.isalpha()) #只能是英文/中文,判断真假

#熟记

print (name.count('好')) #查询元素出现的次数

print (name.endswith('好')) #检测字符串是否以某某结尾,判断真假
print (name.startswith('f')) #检测字符串是否以某某开头,判断真假
print (name.upper()) #把小写字母变成大写
print (name.lower()) #把大写字母变成小写
print (name.find('h')) #取元素的下标,找不到的元素返回-1
print (name.isdigit()) #检测是否是数字,判断真假
print (name.isspace()) #检测是否全是空格,判断真假
print (name.strip()) #用于移除字符串头尾指定的字符(默认为空格或换行符)
print (name.lstrip('o')) #用于移除字符串左边指定的字符(默认为空格或换行符)
print (name.rstrip('o')) #用于移除字符串右边指定的字符(默认为空格或换行符)
print (name.replace('o','周')) #替换字符,将前面的替换成后面的
print (name.zfill(5)) #返回指定长度的字符串,原字符串右对齐,前面填充0
print (name.split()) #1、分割字符串2、默认是以空格和换行符分割的3、把字符串变成一个list
print ('-'.join(name)) #1.以某个指定的分隔符将list变成字符串

 

import string
print(string.ascii_letters) #所有的大写+小写
print (string.ascii_lowercase) #所有的小写
print (string.ascii_uppercase) #所有的大写
print (string.digits) #所有的数字
print (string.punctuation) #所有的特殊字符


print (name.format())
print ('{y}bnbnbnbn{d}'.format(y='s',d=4)) #通过关键字格式化字符串,相当于占位符%s
print ('{0}bnbnbnbn{1}'.format('a','b'))#通过位置格式化字符串,相当于占位符%s

name = 'The Apple'
print (name[1]) #字符串也是可以根据下标来取值的

 

#什么是可变/不可变对象
不可变对象,该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。
可变对象,该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后,实际上是其所指的值直接发生改变,并没有发生复制行为,也没有开辟新的出地址,通俗点说就是原地改变。
Python中,数值类型(int和float)、字符串str、元组tuple都是不可变类型。而列表list、字典dict、集合set是可变类型。
 a=1
b=a
print (id(a)) #id() 函数用于获取对象的内存地址
print (id(b))
a=2
print (id(a))
print (id(b))

 

#元组是不可变的;一旦定义好,不能再变
cities=('beijing','shanghai','beijing')
print (cities[0]) #元组也是可以根据下标来取值的
print (cities.count('beijing')) #查询元素出现的次数
print (cities.index('beijing')) #取元素的下标
import string
nums = list(string.digits)
nums = string.digits
print (nums)
#切片
切片,list取值的一种方式,顾头不顾尾,根据下标取值
stus = ['lxy', 'zyf', 'wdz', 'nl', 'wy', 'gfw']
for stu in stus:
print (stu)
print (stus[:3]) #如果开始的下标不写的话,那么就是从最前面开始
print (stus[-1]) #-1代表最后一个元素
print (stus[1:]) #如果后面下标不写的话,代表取到最后
print (stus[:]) #开头的下标和结尾的下标都不写的话,代表取整个list
print (stus[-2:-5:-1]) #第二个冒号后面值代表步长,是隔几个元素取一次,步是负数的话,从右往左开始取值
print (stus[::-1])
print (stus[-1:-5:-2])
a = [1,1,2,3,4,5,6,72]
b=a[:]
for i in b:
if i%2!=0:
 a.remove(i)
 print (a) # for循环是根据下标进行循环的

 


#非空即真,非零即真

a=[]
b='hut'
c=()
d=0
e=None
if e:
 print ('是真的')
else:
 print ('是假的')

 

 

#字典
k - v
字典是无序的
#增加
shenyang['女朋友']='很漂亮'
shenyang.setdefault('house','三环里面有10套')
shenyang.setdefault('age',26) #setdefault这种方式,如果key已经存在,不管它,如果key不存在的话,就新增。
#修改
shenyang['age']=40

#删除

shenyang.pop('女朋友') # 指定key删除 删除的时候key不存在是会报错的

del shenyang['age'] #用del来删,删除的时候key不存在是会报错的
shenyang.clear() #清空字典
shenyang.popitem() #随机删除一个key
#取值
print(shenyang['addr']) #根据key取值
print (shenyang.get('addr')) #根据key取值
print (shenyang.get('email2','errrrrt')) #返回指定key的值,如果值不在字典中返回默认值(errrrrt)

yaoyuan={'chouyan':'1包','name':'姚远'}

shenyang.update(yaoyuan) #把后面的字典加入到前面的字典里
print (shenyang)
print (yaoyuan)
for k,v in shenyang.items(): #以列表返回可遍历的(键, 值) 元组数组
 print (k,v)

info = [
{
'xiaohei':
{
'money':10000,
'cars':['Ben-z','audi','BMW'],
'info': {
'phone':186212312,
'age':36
}
}
},
{
'xiaohong':
{
'house': {
'朝阳':2,
'海淀':3, # +2
'昌平':5
},
'lan':['ch','en','jp'],
}
}
]
在xiaohong里增加一个性别是女
info[1]['xiaohong']['性别']='女'
  print(info)

 

#记录学生是否交作业小程序
# 学生名字
# 日期
# 状态
data[taotao][2018-6-5]=已交
data['周旭东'] = { '2018-7-1':'未交' }
data = {
'涛涛': {
'2018-6-3':'未交',
'2018-6-4':'已交',
'2018-6-5':'已交'
},
'商洁': {
'2018-6-3': '未交',
'2018-6-4': '已交'
}

}
# data.has_key('key') #python2里面有这个方法

 

#练习

1、判断名字和日期是否都填
2 、 构造好小字典 { data:status}
3、把构造好的小字典和以前那个合并到一起
for i in range(5):
name=input('name:').strip()
date=input('date:').strip()
status=input('status:').strip() #可以不写,如果不写的话,是未交
if name and date:
status = '已交' if status else '未交' #三元表达式,和下面4行的作用一样
# if status:
# print ('已交')
# else:
# print ('未交')
if name in data: #判断这个学生是否存在
data[name][date]=[status] #如果已经存在的话,就给他里面加一个日期和状态
else:#学生不存在的话
data[name]={date:status}
print ('添加之后的',data)
else:
print('学生姓名日期必须写')

 

#高效循环字典的方式
 d={'a':1,'b':2}
print (d.items()) #以列表形式返回可遍历的(键, 值) 元组数组
 for k,v in d.items():
    print (k,v)
for k in d:
   print (k,d.get(k))

 

 #读写文件

1.打开文件
2.进行读/写
3.关闭文件

只读模式(r):只能读,不能写;文件不存在会报错
 f=open('file.txt', 'r')
 print('read',f.read())
 print('readline',f.readline())#读取文件一行的数据
 print('readlines',f.readlines())#获取文件里面所有的数据,每一行的数据放到一个list里面
只写模式(w):能写,不能读,会清空之前文件里的内容;文件不存在的话,会帮你创建一个
 f=open('file.txt', 'w')
 f.write('haha') #覆盖以前文件里面的内容,不能读;文件不存在的话,会帮你创建一个
 names = ['lxy\n','zyf\n','zxd\n','lcs\n']
 for name in names:
 f.write(name+'\n')
 f.writelines(names) #传一个list,然后把list里面的每一个元素写入到文件中
#移动指针
 f=open('file.txt', 'r')
 print('read',f.read())
 print('readline',f.readline())
 f.seek(0)
 print('readline',f.readline())
#关闭文件
 f.close() #关闭一个已打开的文件

只要沾上r,文件不存在肯定会报错
只要沾上w,文件内容肯定会被清空
读写模式(r+):能读,能写;文件不存在会报错
 写读模式(w+):能读,能写,会清空以前的内容;文件不存在会创建
 追加模式(a+):能读、能写、不会清空以前的内容;文件不存在会创建

posted on 2018-06-09 13:44  Melody_69  阅读(139)  评论(0编辑  收藏  举报