目录

  • 1 前言
    • 1.1  Python解释器安装
    • 1.2  PyCharm开发环境
  • 2 Python程序设计实验
    • 2.1  实验1 基本输入输出
    • 2.2  实验2 基本运算
    • 2.3  实验3 字符串处理
    • 2.4  实验4 列表与元组应用
    • 2.5  实验5 列表与元组应用
    • 2.6  实验6 字典与集合应用
    • 2.7  实验7 函数应用1
    • 2.8  实验8 函数应用2
    • 2.9  实验9 类的创建与应用
    • 2.10  实验10 模块应用
    • 2.11  实验11 文件操作
    • 2.12  实验12 异常处理
    • 2.13  实验13 使用正则表达式
    • 2.14  实验14 tkinter基础应用
  • 3 学习参考
    • 3.1  1 Python及其IDLE环境
    • 3.2  2 Python代码规范
    • 3.3  3 使用变量
    • 3.4  4 输入输出
    • 3.5  5 运算符
    • 3.6  6 字符串
    • 3.7  7 条件语句
    • 3.8  8 循环语句
    • 3.9  9 列表
    • 3.10  10 元组
    • 3.11  11 字典
    • 3.12  12 集合
    • 3.13  13 自定义函数
    • 3.14  14 内置函数
    • 3.15  15 类的创建和使用
    • 3.16  16 类的继承与多态
    • 3.17  17 time模块
    • 3.18  18 os模块
    • 3.19  19 random模块
    • 3.20  20 文件
    • 3.21  21 错误与异常处理
 6 字符串

1、字符串的表示方式

(1)使用单引号表示。如:a='abcd'

(2)使用双引号表示。如:a="abcd"

(3)使用三个单(或双)引号表示。可以多行,通常表示注释或文档字符串。


2、字符串中使用转义字符

\\:反斜扛

\':单引号

\":双引号

\n:换行

\0yy:八进制数yy对应的字符。如"\040"表示空格。(前导字符是数字0不是字母O)

\xyy:十六进制数yy对应的字符。如"\x41"表示字符"A"。

\uyyyy:表示编码值为0xyyyy的Unicode字符。


3、禁止使用转义字符

字符串前加r(或R)表示禁止使用转义字符。这时,反斜扛不能为最后一个字符。

如:print(r"C:\tt.txt")


4、访问字符串中的值

(1)通过索引读取指定字符

     字符串的索引有二种方式:

     ----从左到右索引为0,1,2,...

     ----从右到左索引为-1,-2,-3,...

     如:a=s[-2]

(2)利用切片。切片格式:[起始:结束:步长]

---“起始”和“结束”均为索引值(可正可负)

---“步长”为前后索引的差,可正可负。

---截取的字符不包含结束索引对应的字符

   假定a="abcde",则有:

---a[1:3]的值为"bc"  #注意:缺省步长为1

---a[1:4:2]的值为"bd"

---a[2:]的值为"cde"

---a[:2]的值为"ab"

---a[:-2]的值为"abc"

---a[::-1]的值为"edcba"

***注意:不能改变截取部分的值。如:a[0]="k"会触发运行错误。


5、字符串操作符

--->,>=,<,<=,==,!=:按字符的ASCII码值比较。

---+:连接字符串。如:a="abc"+"def"

---*:重复。如:a="k"*3  #a="kkk"

---in:是否包含。如:"a" in "abc"返回值为True;"d" in "abc"返回值为False

---not in:是否不包含。如:"d" not in "abc"返回值为True


6、格式化字符串的方法主要有:

   ***使用符号“%”。

常用的格式符有:

---%d:整数占位。如:x="His age is %d."%a  #a为整型变量

     ---%md:m表示最小宽度,不足补空格。如:s="%3d"%12,则s=" 12"

     ---%0md:0表示不足宽度时左侧补0。如:s="%03d"%12,则s="012"

     ---%.nd:n表示输出宽度,不足补0。如:s="%.3d"%12,则s="012"

     ---%m.nd:为以上综合。如:s="%5.3d"%12,则s=" 012"

     ---%*.*d:*表示m,n的值由字符串后面%()前两位数指定。如:

      s="%*.*d"%(5,3,12),则s=" 012"

---%s:字符串占位。如:x="His name is %s."%nm  #nm为字符串变量

     ---%ms:m为输出最小宽度。不足补空格。如:s="%3s"%"a",则s="  a"

     ---%.ns:n表示截取左侧的字符数。如:s="%.3s"%"abcd",则s="abc"

     ---%m.ns:以上综合。如:s="%4.3s"%"abcd",则s=" abc"

     ---%*.*s:类似%*.*d。如:s="%*.*s"%(4,3,"abcd"),则s=" abc"

---%f:浮点数占位。

     ---%mf:m为最小宽度。如:s="%8f"%3.14,则s="3.140000"

     ---%.nf:n指定小数点后四舍五入保留的小数点位数。默认为6。

      如:s="%.2f"%3.156,则s="3.16"

     ---%m.nf:以上综合。如:s="%5.2f"%3.156,则s=" 3.16"

     ---%*.*f:类似%*.*d。如:s="%*.*f"%(5,2,3.156),则s=" 3.16"

---%o:输出整数的八进制表示。(使用字母o)。如:x="12对应的八进制数为%o"%12

     ---%mo,%.no,%m.no的作用参考%d的部分。

     ---%#o:表示输出八进制数时前面加上前缀0o。

---%x,%X:输出整数的十六进制表示。如:x="123对应的十六进制数为%X"%123

     ---%mx,%.nx,%m.nx的作用参考%d的部分。

     ---%#x:表示输出十六进制数时前面加上前缀0x。

---%e,%E:输出实数的科学计数法表示。如:x="234.12用科学计数法表示为%E"%234.12

---%c:输出一个字符。如:print("65对应的字符为%c"%65)


   ***使用format方法

---使用{}占位,format指定实际输出的数据。

     如:x="{}+{}={}".format(a,b,a+b) #a=1,b=2则x="1+2=3"

---大括号中可指定数据序号0,1,2,...(序号为自然顺序时可省略,如上所示)

     如:x="{0}{1}{0}.format(1,2)  #x="121"

---大括号中可使用命名的关键字参数

     如:x="His age is {age}".format(age=23)  #x="His age is 23"

---可使用字典设置参数

     如:a={'name':'XiaoMing','age':23}

       x="His name is {name},age is {age}".format(**a)  #**a表示字典解包

---通过列表设置参数

   如:a=['XiaoMing',23]

       x="His name is {0[0]},age is {0[1]}".format(a) 

       #这里只有一个参数a。0[0]、0[1]分别表示第一个参数的第1、2个元素

---可指定格式限制符。

   格式为:字段:[[填充]对齐方式][正负号][#][宽度][分组选项][.精度][类型码]

   ---填充:为一个字符,默认为空格。如:s="{:03d}.format(12) #s="012"

   ---对齐方式:^、<、>分别表示居中、左对齐、右对齐(默认:数右对齐,字符左对齐)

      ---对齐方式为“=”表示:在正负号和数字之间填充,仅对数字类型有效。

   ---正负号:仅对数字类型生效。取值有三种:

      ---正号(+):正数前面添加正号,负数前面添加负号

      ---负号(-) 仅在负数前面添加负号(默认行为)

      ---空格:正数前面需要添加一个空格

   ---#:给二进制数、八进制数、十六进制数分别加上前缀0b、0o、0x(或0X)

   ---宽度:指定最小宽度。数字前有0时表示用0填充。

   ---分组选项:取值为","或"_"。对数字以千为单位进行分隔的分隔符。

   ---精度:小数点后要保留的位数。非数字类型为最大宽度。整数类型不能指定。   

   ---类型码:可指定为:

      ---"s":字符串类型。不指定类型,同"s"类型

      ---"b","d","o","x"(或"X"):二进制、十进制、八进制、十六进制整数

      ---"e"("E")、"f"("F")、"g"("G"):浮点类型

      ---"%":百分比格式,数字自动乘上100后按f格式排版,并加%后缀

---如果花括号是字符的一部分,需要使用花括号转义。如:s="{{{}}}".format("a")) #s="{a}"


   ***使用f-字符串

---格式:{content:format} 

   ---content是替换并填入字符串的内容,可以是变量、表达式或函数等

   ---format是格式描述符。包括:

      ---对齐方式:<、>、^分别表示左、右和居中对齐。

      ---数字符号:+(数字前加+)、-(正数前不加+)、空格(正数前加空格)

      ---数字显示方式:#。参考format部分。

      ---宽度与精度:m.n。参考format部分。

      ---千位分隔符:","或"_"。

      ---类型码:同format部分。

---使用示例:

a,b="ZhangSha",23

x=f"His name is {a},and age is {b}"  #x='His name is ZhangSha,and age is 23'

a=23.156

x=f"{a:.2f}"   #x=23.16

a=23

x=f"{a:b}"     #x=10111 (b表示二进制)

a="abcdefg"

x=f"{a:4.6}"   #x="abcdef"   (4表示最小宽度;6表示截取字符数)


7、字符串为str对象,其内建函数有:

---capitalize( ):字符串首字符大写

---center(width):字符串居中,并使用空格填充至长度width

---count(str,beg,end):返回str出现的次数,beg、end指定范围

---decode(encoding,errors):以encoding编码格式解码。出错报ValueError异常, 除非errors指定为'ignore'或'replace'

---encode(encoding,errors):以encoding编码格式编码。出错报异常,除非errors指定为'ignore'或'replace'

---endswith(obj,beg,end):是否以obj结束。beg、 end指定范围

---expandtabs(tabsize):把字符串中的tab符号转为空格,tab符号默认空格数是8

---find(str,beg,end):检测是否包含str。beg、end指定范围

---format( ):格式化字符串

---index(str,beg,end):返回str首次出现的位置。不包含报异常

---isalnum( ):如果所有字符都是字母或数字则返回True,否则返回False

---isalpha( ):如果所有字符都是字母则返回True,否则返回False

---isdecimal( ):如果只包含Unicode数字和全角数字则返回True,否则返回False

---isdigit( ):如果只包含byte数字、Unicode数字和全角数字则返回True,否则返回False

---isnumeric( ):如果只包含Unicode数字、全角数字、罗马数字、汉字数字,则返回True,否则返回False

---islower( ):如果所有字符都是小写,则返回True,否则返回False

---isspace( ):如果只包含空格,则返回True,否则返回False

---istitle( ):如果是标题化的则返回True,否则返回False

---isupper( ):如果所有字符都是大写,则返回True,否则返回False

---join(seq):以原字符作连接符,将序列seq中所有元素(字符串)合并为一个新的字符串

---ljust(width):左对齐,并使用空格填充至长度width

---lower( ):转换所有大写字符为小写

---lstrip( ):截掉左边空格

---maketrans(x,y,z):创建字符映射转换表

   ---只一个参数x,x必须字典

   ---有参数x,y时,x,y必须是长度相等的字符串

   ---z必须是字符串

   ---返回值为字典

   ---参考translate函数

---partition(str):从str出现的第一个位置起,把字符串分成3元素元组

---replace(str1,str2,num):把str1替换成str2,num指定替换次数

---rfind(str,beg,end):类似find(),从右边开始查找

---rindex(str,beg,end):类似index(),从右边开始查找

---rjust(width):右对齐,并使用空格填充至长度width

---rpartition(str):类似partition(),从右边开始查找

---rstrip( ):删除末尾空格

---split(str,num):以str为分隔符切片为列表。num指定切片次数

---splitlines([keepends]):按照行分隔为列表。keepends为True,则保留换行符

---startswith(obj,beg,end):是否是以obj开头。beg、end指定范围

---strip( ):删除左右空格

---swapcase( ):大小写转换

---title( ):标题化:所有单词都是以大写开始,其余字母均为小写

---translate(table):根据表转换字符。如:

   a="".maketrans("ab","89","def") #生成映射表

   b="alive bound find".translate(a) #b="8liv 9oun in"

   #a的作用:将"a"替换为"8","b"替换为"9","d","e","f"删除

---upper( ):小写字母转大写

---zfill(width):返回长度为width的字符串,原字符串右对齐,前面填充