zoukankan      html  css  js  c++  java
  • 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 ','zyf ','zxd ','lcs ']
     for name in names:
     f.write(name+' ')
     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+):能读、能写、不会清空以前的内容;文件不存在会创建

  • 相关阅读:
    3.5——课题选择
    3.8——K-th Substring
    01背包dp
    贪心——IQ
    Secret Project Gym
    快速幂&矩阵快速幂
    用栈非递归实现fib数列
    CodeForces Round #590 (Div 3)
    SQL Server常见问题
    SQL基础函数
  • 原文地址:https://www.cnblogs.com/you-shu/p/9141686.html
Copyright © 2011-2022 走看看