(三)字符串

字符串 str
  作用:
    用来记录文本信息
  表示方法:
    在非注释中,凡是用引号括起来的部分都是字符串
    '  单引号
    "  双引号
    ''' 三单引号
    """ 三双引号
空字符串的表示方法:
 ’‘
 ”“
 ’‘’‘’‘
 ”“”“”“
 注:空字符串的布尔值为False

 非空字符串表示方式:
   'hello'
   "hello"
   '''hello'''
   """hello"""

单引号和双引号的区别:
  单引号内可以包含双引号
  双引号内可以包含单引号

三引号字符串的作用:
  三引号字符串中的换行会自动转换为换行符 '\n'
  三引号内可以包含单引号和双引号
示例:
  print('welcome to beijing.\nI like
  python!\nI am Studing!')

隐式字符串孜字面值拼接
  s = "I'm " 'a programer. ' 'my name is "weimingze"' 
 print(s)

用转义序列代表特殊字符
  字符串字面值中用字符反斜杠 \ 后跟一些字符代表特殊的一个字符

 \' 代表一个单引号(')
 \" 代表一个双引号(")
 \\ 代表一个反斜杠(\)
 \n 换行
 \r 返回光标至行首
 \f 换页
 \v 垂直制表符
 \b 倒退
 \0 空字符(字符值为零)
 \0oo oo为两位八进制表示的字符
 \xXX XX为两位十六进制表示的字符
 \uXXXX UNICODE16 的十六进制表示的字符
 \UXXXXXXXX UNICODE32 的十六进制表示的字符

ASCII编码
  查看ASCII 编码表:

  man ascii <回车>

常用的ASCII编码:
  字符        十进制         十六进制
  '0'          48            0x30
  'A'          65            0x41  
  'a'          97            0x61

raw 字符串(原始字符串)
 格式:
    r'字符串内容'
    r"字符串内容"
    r'''字符串内容'''
    r"""字符串内容"""
 作用:
    让转义符号\无效
 示例:
    a = r'c:\newfile\test.py'
    print(a)
  
求字符串序列的长度的函数
len(x) 返回字符串中字符的个数
 
练习:
  '1234abcd'  有几个字符? #8个
  '5\'4"'   有几个字符?   #4
   '\"A\x34\056' 有几个字符? #4
   '\a\bc\td\n' 有几个字符?   #6

序列的概念:
  字符串是序列的一种

字符串的运算:
  + 加好用于拼接字符串
    x = "ABC" + 'DEF'
    print(x)
    y = "123"
    z = x + y

  += 复合赋值
    x += y 等同于 x = x + y
运算符生成重复的字符串

 x = "ABC" * 2
 print(x)
 注: 字符串只能和整数相乘

  *= 运算符:
    x *= y 等同于 x = x * y

练习;
  写一个程序,打印一个高度为4行的矩形方框
  要求:输入一个整数代表矩形宽度
  如:
    请输入矩形宽度: 10
  打印如下:
    ##########
    #        #
    #        #
    ##########

x = int(input("请输入一个整数"))
y = x * "#"
z = " "
print(y)
print("#" + (x - 2) * z + "#")
print("#" + (x - 2) * z + "#")
print(y)

字符串的比较运算
  运算符:
   > >= < <= == !=
  示例:
    "A" == 'A'  # True
    'A' < 'B'   # True
    'ABC' > 'ABB' # True
    'ADC' < 'ABC' # False
    'AD' > 'ABC'  # True
    'AB' > 'ABC'  # False
    'ABCD' != 'DCBA' # True

in / not in 运算符
  作用:
    in 用于序列,字典,集合等容器类中,用于判断某个值是否存在于容器中,如果存在返回True,不存在返回False
    not in 与 in 运算符返回的布尔值相反
  格式:
    对象 in 序列
  示例:
    x = 'welcome to beijing'
    'to' in x # True
    'hello' in x # False

练习:
  写程序,
  输入一个长长的字符串,判断你的名字是否在这个字符串内。如果存在,则打印:“你的名字出现了”
  否则不予理睬

   x = input('请输入你的名字')
   n = "vnrtjn"
   if x in n:
       print("你的名字出现了")

字符串的索引
索引  index
  python字符串是不可以改变的字符序列
语法:
  字符串[整数表达式]
说明:
 python序列都可以用索引(index)来访问序列中的对象
 python序列正向的索引从0开始,第二个索引为1,最后一个索引为len(s)-1
 python序列的反向索引从-1开始,-1代表最后一个,-2代表倒数第二个,以此类推,第一个是-len(s)

练习:
  输入一个字符串,打印如下内容
  1.打印这个字符串的第一个字符
  2.打印这个字符串的最后一个字符
  3.如果这个字符串的长度是奇数,打印中间的这个字符
   求长度: len(x)

s = input('请输入一个字符串')
print(s[0])
print(s[-1])
if len(s) % 2 != 0:
    print(s[len(s)//2])

切片 slice
  作用:
    从字符串序列中取出一部分相应的元素重新组成一个字符串
  语法:
    字符串[(开始索引b)]:(结束索引e)(:(步长s))
  注:()内括起的部分代表可以省略
  说明:
    1.开始索引是切片开始切下开始切下的位置0代表第一个元素,-1代表最后一个元素
    2.结束索引是切片的终止索引(但不包含终止索引)
    3.步长是切片每次获取完当前索引后移动的方向和偏移量
       1) 没有步长,相当与取值完成后向后移动一个索引的位置(默认为1)
       2) 当步长为正整数时,取正向切片:
          步长默认值为1,开始索引默认值为0,结束索引的默认值为len(s)
       3) 当步长为负整数时,取反向切片:
          反向切片时,默认的起始位置为最后一个元素,默认终止位置为第一个元素的前一个位置

示例:
  s = 'ABCDE'
  a = s[1:4]  # a ->'BCD'
  a = s[1:]   # a ->'BCDE'
  a = s[:2]   # a ->'AB'
  a = s[:]   #a ->'ABCDE'
  a = s[4:2]  #a ->"
  a = s[2:10000]  # a ->'CDE'开始索引/结束索引可以越界
  a = s[::2]  # a ->'ACE'
  a = s[1::2]  # a ->'BD'
  a = s[::-1]  # a ->'EDCBA'
  a = s[::-2]  # a ->'ECA'
  a = s[4:0:2]  # a ->'EC'


 输入任意一个字符串,判断这个字符串是否是回文
     回文是指中心对称的文字,如:
    上海自来水来自海上
    ABCCBA
           12321

s = input('请输入一个字符串')
a = s[0:]
b = s[::-1]
print(a,b)
if a == b :
    print("是回文")
else:
    print("不是回文")

python3中常用的序列函数
  len(x)  返回序列的长度
  max(x)  返回序列的最大值元素
  min(x) 返回序列的最小值元素

示例:
  s = "hello"
  print(len(s))  # 5
  print(max(s))  # o
  print(min(s))  # e

字符串编码(encode)的转换函数
  ord(c)  返回一个字符的Unicode值
       ord('赵')   36213
  chr(i)  返回i这个值所对应的字符
       chr(36213)  赵

整数转换为字符串的函数:
  hex(i)  将整数转换为十六进制的字符串
  oct(i)  将整数转换为八进制的字符串
  bin(i)  将整数转换为二进制的字符串

问题:
  '123' + 1  可以吗?
  字符串的构造函数 str
  str(obj='')  对象转字换为字符
  str(3.14)  # '3.14'
  str(None)  #'None'

python3中常用的字符串方法(method):
  方法的调用语法:
    对象.方法名(方法传参)
  示例:
    'abc'.isalpha()  #是正确的语法
    123.isalpha()   #是错的

常用的字符串方法:
  见文档:
    doc...

转义格式 意义
\' 单引号(')
\" 双引号(")
\\ 反斜杠(\ )
\n 换行
\r 返回光标至行首
\f 换页
\t 水平制表符
\v 重直制表符
\b 倒退
\0 空字符,字符值为零
\0oo oo为两位八进制表示的字符
\xXX XX为两位十六进制表示的字符
\uXXXX Unicode 16的十六进制表示的字符
\UXXXXXXXX Unicode 32的十六进制表示的字符

常用字符串方法

方法 说明
S.isdigit() 判断字符串中的字符是否全为数字
S.isalpha() 判断字符串是否全为英文字母
S.islower() 判断字符串所有字符是否全为小写英文字母
S.isupper() 判断字符串所有字符是否全为大写英文字母
S.isspace() 判断字符串是否全为空白字符
S.center(width[,fill]) 将原字符串居中,左右默认填充空格
S.count(sub[, start[,end]]) 获取一个字符串中子串的个数
S.find(sub[, start[,end]]) 获取字符串中子串sub的索引,失败返回-1
S.strip() 返回去掉左右空白字符的字符串
S.lstrip() 返回去掉左侧空白字符的字符串
S.rstrip() 返回去掉右侧空白字符的字符串
S.upper() 生成将英文转换为大写的字符串
S.lower() 生成将英文转换为小写的字符串
S.replace(old, new[, count]) 将原字符串的old用new代替,生成一个新的字符串
S.startswith(prefix[, start[, end]]) 返回S是否是以prefix开头,如果以prefix开头返回True,否则返回False,
S.endswith(suffix[, start[, end]]) 返回S是否是以suffix结尾,如果以suffix结尾返回True,否则返回False
以下是不常用的  
S.title() 生成每个英文单词的首字母大写字符串
S.isnumeric() 判断字符串是否全为数字字符
   

空白字符

是指空格,水平制表符(\t),换行符(\n)等不可见的字符

格式化字符串中的占位符和类型码

占位符类型码 意义
%s 字符串
%r 字符串,使用repr 而不是str
%c 整数转为单个字符
%d 十进制整数
%o 八进制整数
%x 十六进制整数(字符a-f小写)
%X 十六进制整数(字符A-F大写)
%e 指数型浮点数(e小写),如2.9e+10
%E 指数型浮点数(E大写),如2.9E+10
%f, %F 浮点十进制形式
%g, %G 十进制形式浮点或指数浮点自动转换
%% 等同于一个%字符

练习:
  1.输入一个字符串,把输入的字符串中的空格全部去掉,打印出处理后的字符串的长度和字符串的内容
  2.用字符串 * 运算符打印三角形
     输入一个整数,此整数代表此三角形离左侧的空格个数
     如:
       请输入距离:3
     打印结果
   *
       ***
      *****
     *******   # < --此处左边为三个空格的距离

 x = int(input('请输入一个整数'))
 print(x * " ","   *")
 print(x * " ","  ***")
 print(x * " "," *****")
 print(x * " ","*******")

3.输入三行文字,让这三行文字在一个方框内居中显示
 如输入(不要输入中文):
 hello!
   I'm studing python
   I like python
 
   显示如下:
   +---------------------+
   |       hello!        |
   | I'm sthding python! |
   |    I like python    |
   +---------------------+

a = input("请输入第一行文字")
b = input("请输入第二行文字")
c = input("请输入第三行文字")
x = a.center(30)
y = b.center(30)
z = c.center(30)
print("+",30 * "-","+")
print("|",x,"|")
print("|",x,"|")
print("|",z,"|")
print("+",30 * "-","+")


 

展开阅读全文

没有更多推荐了,返回首页