来自 编程应用 2019-09-04 19:47 的文章
当前位置: 六合联盟网 > 编程应用 > 正文

第一周知识点总结,python学习笔记

第三章 字符串学习

第一周总结:

1、字符串不可修改, 无法进行分片赋值

  一. python基础

>>> format = "hello, %s. %s enough for ya?"
>>> values = ('world','hot')
>>> print (format % values)    #在%的左侧放置一个字符串(格式化字符串),右侧放置希望格式化的值
hello, world. hot enough for ya?

>>> format = "Pi with three decimals: %.3f" #.3表示希望保留的小数位数,f表类型(浮点数)
>>> from math import pi
>>> print(format %pi)
Pi with three decimals: 3.142

模板字符串  string--Template---substitute
>>> # 模板字符串
>>> from string import Template
>>> s=Template('$x,glorious $x!')
>>> s.substitute(x='slurm')
'slurm,glorious slurm!'

>>># 如果替换字段是单词的一部分,需要加{}
>>> s=Template("It's ${x}tastic!")
>>> s.substitute(x='slurm')
"It's slurmtastic!"

>>> #可以使用$$插入美元符号
>>> # 使用字典变量提供值/名称对
>>> s=Template('A $thing must never $action.')
>>> d={}
>>> d['thing']='gentleman'
>>> d['action']='show his socks'
>>> s.substitute(d)
'A gentleman must never show his socks.'

2、字符串格式化
>>> '%s plus %s equals %s' %(1,1,2)  # #使用元组替代,注意不能丢掉括号  
'1 plus 1 equals 2'
>>> 'Price of eggs: $%d' % 42  #d,i表示带符号的十进制整数
'Price of eggs: $42'
>>> 'Hexadecimal price of eggs: %x' % 42  #不带符号的十六进制(小写),X(大写)
'Hexadecimal price of eggs: 2a'
>>> from math import pi
>>> 'Pi: %f...' % pi  #f/F十进制浮点数
'Pi: 3.141593...'
>>> 'Very inexact estimate of pi: %i'  %pi  #i带符号的十进制整数
'Very inexact estimate of pi: 3'

3、段宽度和精度
>>>#宽度:转换后的值所保留的最小字符个数。
>>>#精度:应包含的小数位数,或者是转换后最大字符个数。(字符串)
>>> '%10f' % pi #字段宽度10
'  3.141593'
>>> '%10.2f' %pi #字段宽度10 精度2
'      3.14'
>>> '%.2f' %pi #精度2
'3.14'
>>> '%.5s' % 'hello python' #精度5,对于字符串来说,就是最多五个字符
'hello'
>>> '%.*s' %(5,'hello python') #用*表示精度,值在元组中  
'hello'

4、符号、对齐和0填充--在字段宽度和精度之前可以放置一个标表,该标表可以是零、加号、减号或空格
>>> from math import pi
>>> '%10f'% pi
'  3.141593'
>>> '%010.2f' %pi
'0000003.14'
>>> '%-10.2f' % pi # -表示左对齐
'3.14  
>>> print(('% 5d' %10) + 'n' + ('%5d' %-10)) #空格,在正数前加空白,方便与负数对齐
   10
  -10
  >>> print(('%+5d' % 10)+'n' + ('%+5d' % -10)) #(+)加号,正数和负数都标出符号
  +10
  -10

5、字符串方法
# find方法可以在一个较长的字符串中查找子字符串,返回子串所在位置的最左端索引。没找到返回-1
>>> title="Monty python"s Flying Circus"
>>> title.find('Monty')
0
>>> title.find('python')
6
>>> subject = '$$$ Get rich now!!! $$$'
>>> subject.find('$$$')
0
>>> subject.find('$$$', 1) #提供起点,从1开始
20
>>> subject.find('!!!', 0, 16) #提供起始点和结束点,其中包括起始索引,不包括结束索引  
-1                             # -1代表未找到

# join方法是split方法的逆方法,用来连接列表,只能是字符串
>>> seq=['1','2','3','4','5']
>>> sep = '+'
>>> sep.join(seq)
'1+2+3+4+5'
>>> 
>>> dirs = '', 'usr', 'bin', 'env'
>>> '/' .join(dirs)
'/usr/bin/env'
>>> print('C:' + '\'.join(dirs))
C:usrbinenv

#lower方法返回字符串的小写字母版
>>> 'SHE IS TALL'.lower()
'she is tall'

#title方法将字符串的首字母转换为大写,其他字母小写
>>> "that's all folks".title()
"That'S All Folks"

#String模块的capwords函数:将所有字母都转换为大写
>>> import string
>>> string.capwords("that's all folks")
"That's All Folks"
>>> 
#replace方法返回某字符串的所有匹配项均被替换之后得到的字符串
>>> 'This is a test'.replace('is', 'eez')
'Theez eez a test'

#split方法是join的逆方法,用来将字符串分割成序列
>>> '1+2+3+4+5+6+7+8+9'.split('+')
['1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> '/usr/bin/env'.split()
['/usr/bin/env']
>>> '/usr/bin/env'.split('/')
['', 'usr', 'bin', 'env']
>>> 'Using the default'.split()
['Using', 'the', 'default']

#strip方法返回去除两侧(不包括内部)空格的字符串
>>> '        internal whitespace is kept    '.strip()
'internal whitespace is kept'

#translate()同replace()一样,不过只能处理单个字符

    1. python 是一门解释型,弱类型语言.

字符串学习 1、字符串不可修改, 无法进行分片赋 >>> format = "hello, %s. %s enough for ya?">>> values = ('world','hot')>>> print (format % values) #在...

    2. print('内容', '内容' , end = 'n')    #  print() 打印时,后面end默认是(n)换行.  若不想换行则需要给end进行赋值

    3. 变量: 程序运算过程中产生的中间值,存储在内存中.供后面的程序调用.

    4. 变量的数据类型(现阶段学习的类型):

      1) int     整数类型

      2) str     字符串类型

      3)bool   布尔类型,值只有True和false

    5. 命名规则:

      1) 由数字,字母,下划线组成

      2) 不能是纯数字,或者数字开头

      3)不能是关键字

      4)不能太长

      5)要有意义

      6)不要用中文

      7)区分大小写

      8)推荐使用驼峰和下划线的方法命名

  6. input()   用户输入    #与用户进行交互,当程序运行到这里时,暂停等待用户输入内容让后再继续运行程序.

  7. if 判断:

    if 条件:          if 条件:

      代码块          代码块1

    else:           elif 条件2:

      代码块          代码块2

                 ......

                 else:

                  

二. while循环:

  1.while的基本样式:

    while 条件:

      循环体        #  流程:  判断条件是否为真,为真时,执行循环体,再次判断是否为真......

    else:            指导判断结果为假时,执行else,退出循环.

      代码块

  2.格式化输出:

    1) %s 字符串    例:  a = '我爱我家,我爱%s,我爱%s!'  % ('XX' , 'nn')  print(a)=====>   我爱我家,我爱XX,我爱nn!

    2) %d 数字  例:  a = '在北京有%d家五星级酒店,%d家商务酒店.'  % (22,66)  print(a)  ====>   在北京有22家五

               星级酒店,66家商务酒店.

  3.运算符:

    1.逻辑运算:

      1) end     与     两端同时为真的时候结果为真,否则为假.

      2) or      或者   两端有一个为真结果就为真,只有两端同时为假时,结果才为假.

      3) not    取反  

      运算顺序:    () => not => and => or =>最后才是< 和 > 

      x or y  ===>   如果X非零, 取X.    否则取y

  2.编码种类:

    1.  ASCII,    8bit ,       1byte

    2.  GBK,    16bit ,       2byte

    3.  UTF - 8,    英文  8bit   1byte      欧洲    16bit    2byte    中国     32bit     3byte

  3. 基本的数据类型:

    1. 基本的数据类型:

      1). int  数字,  bit_length()  二进制长度

      2). bool  空: False      非空: True

      3). str  字符串不可变

        字符串的基本操作方法:

          1. 索引切片:   由 0 开始   #即可以从字符串里的第一项开始,即0位置.

            方法:   [起始位置 : 结束位置 : 步长]

          2. 操作:

            1). upper()  变成大写       一般用于忽略大小写的时候,或者有大小写歧义的时候.

               例:    

                a = 'abcd'        a.upper()       print(a)  ======>    ABCD

            2).strip()  去掉空格(两端的)

               例:

                a = '     abcd      '       a.strip()       print(a)   =====>  "abcd"

            3).split()  切割

               例:

                a = 'a, b, c, d'  a.split(" , ")  print(a)   ====>  'a'  'b'  'c'  'd'

            4). replace()  替换     

               例:   a = 'a a a a a a a a a '

                 b = a.replace('a' , 'b')

                                   b = a.replace('a', 'b' , 3)

                    print(b) ==>  'b b b b b b b b b'    print(b) ==>   'b b b a a a a a a '  

            5). startswith()  以XXX开头

              a = 'abcd'       a.startswith('a')  ==>   Ture         a.startswith('b) ===> False       如果是以XX开头则返回Ture否则返回False.

            6). find()  找出XXX字符串在原字符串中出现的次数,找不到返回 -1

              a = 'abcd'     print(a.find('a'))===>    1

            7). count()  数数  例: a = 'abcd'    print(a.count('b'))    计算字符'b'   在字符串a 出现的次数,   为1次.

            8). format()  格式化输出  

                # 格式化输出
                  s12 = "我叫%s, 今年年%d岁了了, 我喜欢%s" % ('sylar', 18, '周杰伦') # 之前的写法
                  print(s12)
                  s12 = "我叫{}, 今年年{}岁了了, 我喜欢{}".format("周杰伦", 28, "周润发") # 按位置格式化
                  print(s12)
                  s12 = "我叫{0}, 今年年{2}岁了了, 我喜欢{1}".format("周杰伦", "周润发", 28) # 指定位置
                  print(s12)
                  s12 = "我叫{name}, 今年年{age}岁了了, 我喜欢{singer}".format(name="周杰伦", singer="周润
                  发", age=28) # 指定关键字
                  print(s12)

            9). len()  求长度

                  a= '1, 2, 3, 4, 5, 6'                    print(a.len()) ====>  6

          5. 条件判断
            # 条件判断
            s14 = "123.16"
            s15 = "abc"
            s16 = "_abc!@"
            # 是否由字母和数字组成
            print(s14.isalnum())
            print(s15.isalnum())
            print(s16.isalnum())
            # 是否由字⺟母组成
            print(s14.isalpha())
            print(s15.isalpha())
            print(s16.isalpha())
            # 是否由数字组成, 不不包括小数点
            print(s14.isdigit())
            print(s14.isdecimal())
            print(s14.isnumeric()) # 这个比较牛B. 中文都识别.
            print(s15.isdigit())
            print(s16.isdigit())
            # 练习. 用算法判断某一个字符串串是否是小数
            s17 = "-123.12"
            s17 = s17.replace("-", "") # 替换掉负号
            if s17.isdigit():
              print("是整数")
            else:
              if s17.count(".") == 1 and not s17.startswith(".") and not s17.endswith("."):
                print("是小数")
            else:
              print("不是小数")

 

  1.  列表:

   由[]表示.

    有索引和切片

    常用操作:

      增加:

        append()  在末尾添加

        instert()  在指定位置添加

        extend()  迭代添加 

      删除:

        pop()  默认删除最后面的,限定索引位置后删除特定的项.

        remove()  删除指定的项,  #  必须在括号中给出想要删除的项本身

        colar()  删除列表中的全部内容,使之成为空列表

        del  a[1: 3: 2]     [起始位置: 结束位置: 步长]   左闭右开    切片删除

      改:

        索引切片修改

         例:  

          lst = ["太白", "太黑", "五色", "银王", "日天"]

          lst[1] = "太污" # 把1号元素修改成太污

          print(lst)

          lst[1:4:3] = ["麻花藤", "哇靠"] # 切片修改也OK. 如果步长不是1, 要注意. 元素的个数    在第1  到4项中每三项替换1个     注:切片左闭右开

          print(lst)

          lst[1:4] = ["李嘉诚个cxxx"] # 如果切片没有步长或者步长是1. 则不不用关心个数      把1到3项替换为'李嘉诚个cxxx'         注:切片左闭右开

          print(lst)

      查询:

        for 变量  in 可迭代对象:

          循环体

        else:

          代码块

      操作:

        sort()  排序

        sort(reverse=True)   降序

        reverse()  翻转

        len()  长度

        count()  数数

    元组:  

      tuple, 只读列表, 由()组成. 不可变的

      索引和切片. for循环

    

    解构, 解包    #   解包,结构在元组, 列表, 字典中都可以使用,在字典中,返回的是kay.

      a, b = 1, 2  (a, 1)   (b, 2)

      range(10)   0 1 ... 8 9

      range(5, 10)    5 6 7 8 

      range(5,10,3)    5,8

    

  1. dict 字典

  由{}表示. 存储key:value 键值对. 根据key来计算hash值.找到对应的内存地址.

  key必须是可hash的. 不可变的. int, str, 元组, bool

    操作:

      增加: dict[key] = value

      a = {'a': 1, "b": 2}    a.setdefault('c', 1) ====> print(a)  ===>     {}

      删除: pop(key), del , popitems(), clear()

      修改: dict[key] = value

        dic = {"id": 123, "name": 'sylar', "age": 18}
        dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}
        dic.update(dic1) # 把dic1中的内容更更新到dic中. 如果key重名. 则修改替换. 如果不不存
                  在key, 则新增.
        print(dic)
        print(dic1)

      查询:dict[key].get(key, 默认值)

        

        print(dic['name'])
        # print(dic['sylar'])   # 报错
        print(dic.get("ok"))
        print(dic.get("sylar"))       # None
        print(dic.get("sylar", "牛B"))      # 牛B

      setdefault() 先执行新增那个流程. 然后.获取到key对应的值

    常规操作:

      keys() 获取所有的key.返回的像个列表

      values() 获取所有value

      items() 获取所有的key,value.装成元组. 返回列表[(key,value), (key,value)]

      通过items()获取的是k,v

      for k,v in dict.items():

      直接循环遍历. 拿到的是key

      for k in dict:

 

          

本文由六合联盟网发布于编程应用,转载请注明出处:第一周知识点总结,python学习笔记

关键词: